no
тоже с update оператором
Egor
доброго утра всем. Есть реплика A B C, C - ввел недавно и хочу IP адрес B перенести на C - они все секондари, A - праймари. Может ли чтото сломаться или достаточно погасить B, перенести ип на C и запуститься, а реплика догонит и все будет супер?
Sardor
Почему? Я считаю что нужно сделать single по всем полям участвующим в поиске
Compound index поддерживает поиск по всем полям в структуре индекса. Если хорошо построить свой запрос с compound indexом тогда можно и добиться covered query так как все нужные поля находятся в структуре одного индекса
Eugen
Привет всем , ребят, подскажите пожалуйста У меня есть такой документ { "_id": "5f860e1da75b577bc4c3c27b", “name”: “exists”, "uniqe": true, } { "_id": "5f860e1da75b577bc4c3c27c”, “name”: “exists”, "uniqe": false, } { "_id": "5f860e1da75b577bc4c3c27d”, “name”: “exists”, "uniqe": false, } и надо вывести { “name”: “exists”, “countUniqeTrue”: 1, “countUniqeFalse”: 2, } подскажите как это сделать ?
Roman
Находишь по полю все объекты, дальше фильтруешь? const uniqeTrue = data.filter(obj => obj["uniqe"] === true).length; const uniqeFalse = data.filter(obj => obj["uniqe"] === false).length;
Eugen
нууу я бы хотел на уровне запроса в базу это сделтаь
Eugen
бо может дойти до нескольки тысячь документов…
Eugen
и фильтром не до конца хорошое решение (
Eugen
Ну, я вот так накидал по быстрому
а что за сайт на котором это пишешь?
walsash
Всем привет! Из объекта posts мне нужно достать объекты, у которых "published: true". Получается только все объекты вытащить через find, а с параметрами вообще не пойму как запрос составить. Хелп?
Ilya
то есть если вы составите примерно такой запрос : db.collection.find({_filter_}, {posts: { $elemMatch: { published: true}}}) то должны будут вернуться документы удовлетворяющие вашему филтру но в массиве posts должны остаться только с published: true
Ilya
ну вдруг вам надо как то сами документ отфильтровать - по какому то условию
Ilya
то есть можно и {} - тогда будут все документы возвращаться
walsash
то есть можно и {} - тогда будут все документы возвращаться
Аа, я думал стандартный параметр какой-то. Тогда не получается. .find({}, {"posts": {"$elemMatch": {"published": True}}}) На выходе: pymongo.cursor.Cursor object at 0x03AA1890 Если проитерировать: {'_id': ObjectId('5f7c1277abc517c9c90fd506')}
Mrk
Кто-нибудь знает можно ли в mongo на вставку данных сделать какую-то интеграцию с PostgreSql, чтобы также и туда Insert проходил?:)
yopp
Сделать сервис который подписывается на изменения в коллекции и выполняет вставку в pg
Mrk
Вероятно на change stream можно что-то собрать
спасибо, про стримы почитаю, а не подскажешь что за сервисы такие? погуглил, что репликацию данных как-то можно настроить, мб как-то в этом ключе покапать?
yopp
Сервис в том смысле что какой-то процесс на удобном вам языке, который будет подписан на монгу и будет иметь доступ в пг
yopp
Для change stream нужна реплика, да
Mrk
Для change stream нужна реплика, да
большое спасибо) в плане реализации, думаю, разберусь. Просто было важно узнать: возможно ли это вообще)
Максим
Ребята, помогите найти причину. При ребуте сервера демон монги не стартует, падает с ошибкой. Если сделать systemctl restart mongodb — то все ок, поднимается. Вот лог — 2020-10-14T22:35:16.659+0300 I CONTROL [main] ***** SERVER RESTARTED ***** 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] MongoDB starting : pid=904 port=27017 dbpath=/var/lib/mongodb 64-bit host=Planck 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] db version v3.6.8 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] git version: 8e540c0b6db93ce994cc548f000900bdc740f80a 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] allocator: tcmalloc 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] modules: none 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] build environment: 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] distarch: x86_64 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] target_arch: x86_64 2020-10-14T22:35:16.729+0300 I CONTROL [initandlisten] options: { config: "/etc/mongodb.conf", net: { _____bindIp: "127.0.0.1,ЗДЕСЬ IP СЕРВЕРА"_____, unixDomainSocket: { pathPrefix: "/run/mongodb" } }, security: { authorization: "enabled" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongodb.log" } } 2020-10-14T22:35:16.731+0300 E STORAGE [initandlisten] Failed to set up listener: ____SocketException: Cannot assign requested address____ 2020-10-14T22:35:16.731+0300 I CONTROL [initandlisten] now exiting 2020-10-14T22:35:16.731+0300 I CONTROL [initandlisten] shutting down with code:48 Я выяснил что после ребута на сервере нет папки /run/mongodb Если сделать рестарт монги (systemctl restart mongodb) то эта папка появляется и всё работает.
Максим
почему такое может быть? и как исправить?
Максим
https://groups.google.com/g/mongodb-user/c/k9-y1NPchwY похоже что что-то не так с байнд айп
.
почему загружать всю базу данных при старте программы в переменную, а потом с интервалом сохранять данные это плохое решение
Максим
https://groups.google.com/g/mongodb-user/c/k9-y1NPchwY похоже что что-то не так с байнд айп
Убрал из байнд второй айпи и всё пофиксилось. Но как же так? Такое ощущение что айпи серваку не сразу дают..
Alikhan
всем привет! технологии: mean. Я фронтендер и редко приходится писать api. написал апишку на ноде и монго (до обновления). Славил баг: Есть форма входа/регистрации. Данные отправляются на сервер со статусом "pending" и морган выводит в консольку что поступил запрос. Но сервер не сохраняет юзера в бд. Думаю проблема в монго. Так как апишку писал 2 месяца назад. Тогда все работала. Я не бэкендр и все это время не запускал свой сервер. Спустя месяца 2, сейчас славил баг такой
Alikhan
мой метод регистрации, модель юзера, и app.js файл
Alikhan
Alikhan
Рустам
Коллеги всем привет! Хочу задать вопрос 🙂 Кто-нибудь работал с Mongo DB(Motor) в связке c aiohttp? В частности в продакшне, как полет?
Eugen
Всем привет, ребят подскажите пожалуйста. Мне надо сделать график в котором будет показано за каждый день сколько людей зарегалось. От старта нп 01-01-2020 и до сегодня . Как это можно найлучше реализовать ? есть ли возможность выписать список дней ( каждый день ) и получить отдельно лист количество ? Если что, использую так же Node.js
Eugen
агрегация с группировкой по дням
Окей, только будут дни когда 0 регистраций = не будет в базе. А мне надо с учетом дней в которых 0 тоже
Nick
ну так добавьте их если нет уже перед выводом на экран
Viktar
Добрый день, подскажите почему для запроса db.collection.find{city: 'NY', links: {$exists: true}, version:5}) не используется индекс db.collection.createIndex({city:1,version:1},{partialFilterExpression:{links:{$exists:true},background:true}}) ,а используется индекс db.collection.createIndex({city:1}) ?
yopp
db.collection.getPlanCache().clear().
Viktar
не помогло
yopp
а индекс уже создался?
Viktar
да, он есть в списке
Viktar
пробую его хинтом подкинуть, но не получаю ошибку
Viktar
в хинте же имя индекса указывается?
Viktar
Error: error: { "ok" : 0, "errmsg" : "error processing query: ns=catalog.personCatalogTree: $and\n city $eq \"ny\"\n links exists\nSort: {}\nProj: {}\n planner returned error :: caused by :: hint provided does not correspond to an existing index", "code" : 2, "codeName" : "BadValue" }
yopp
в хинте же имя индекса указывается?
или имя индекса или его шейп
yopp
The index to “hint” or force MongoDB to use when performing the query. Specify the index either by the index name or by the index specification document.
Viktar
посмотрел db.collection.stats() размер индекса какой то совсем смешной
Viktar
аверное индекс криво создался
yopp
а, $exists в фильтрах индексов так и не работает: https://jira.mongodb.org/browse/SERVER-17853
Viktar
"city_links" : 12288
yopp
а, хотя пишут что уже реализовали
yopp
а какая у вас версия монги?
Viktar
4.4
Viktar
мне кажется я криво индекс создал
Viktar
похоже я бекграунд запихнул в партиал экспрешен
yopp
а, да :)
yopp
👍
Viktar
2 часа моей жизни)))
Viktar
а $exists: false ещё не реализовали же?
yopp
получается так, да
yopp
в принципе, поиск по $exists не очень хороший паттерн
Viktar
согласен. но мне надо сократить выборки для процессинга. поэтому приходится выкручиваться
yopp
добавить поле с null?
yopp
и положить его в индексе в постфикс?
Viktar
я не знаю что такое постфикс
Viktar
а вот find хорошо отрабатывает с null если поле не существует
Viktar
думаю попробывать в партиал експрешен добавть
Алексей
Всем добро вечера
Алексей
подскажите как сделать update через updateOne(filter,doc)
Алексей
но что бы в фильтр был id
Алексей
с базы
Алексей
все перепробывал
Алексей
ни как не апдейтит
Алексей
но если делаю поиск по title к примеру