wertaer
наверное...
Ярослав
CreateOrUpdate? попробовать?
https://docs.mongodb.com/drivers/node/fundamentals/crud/write-operations/upsert/
Hellomik
Hi кто знает почему lookup in array возращает массив внутри массива ?
wertaer
CreateOrUpdate? попробовать?
там скорее всего проблема в том, что телега апдейты разом закидывает и вот такая вот канитель выходит, я полагаю...
wertaer
CreateOrUpdate? попробовать?
ну мб сработает...
Sergey
Ещё вопрос появился по mongodb realm. А как там вообще роли юзерам назначаются? Или где почитать как это вообще работает, в документации вижу только как создавать а как накладываются эти оганичения не понятно.
.
Привет, почему при сохранении Python datetime объекта в монго и последующем возвращении приходит другой datetime объект, разница в миллисекундах. При этом он находится по оригинальному значению, но возвращает другое значение.
TheDiVa
Ребятишки, как сделать чтобы бд хранилась на моем пк после чего сделать доступной через localhost:12345 Я просто еврей (денег нема) платить нехочеца сторонним сервисам, предоставляющую это возможность
Michail
Привет, подскажите как правильно создать динамические запросы, у меня например приходит такой URL: /games?genres=action,fantazy&developer=ubisoft,playstore то есть постоянно меняется, и допустим если пользователь захочет добавить параметр &publisher=steam, то мне придётся ещё к модели Game добавить populate("publisher"). Есть ли способ динамически создавать корректный запрос к mongoose?
TheDiVa
Собратья, помогите решить проблему. Плагин Minecraft (LuckyPerms) пытается подключится к базе данных. Судя по логам у меня ничего не получилось. Посмотрите пожалуйста и помогите советом, по возможности
TheDiVa
А, я это уже понял
TheDiVa
Проблема была в том что я не к той бд подключился
TheDiVa
Все равно спасибо. Теперь я точно убедился что ошибок нет
Jamal
всем привет
Jamal
как сделать поиск по нескольким полям? делаю как на скрине, но конечный вариант получается такой, что запись должен включать в себя совпадения по всем трем полям, то есть, как если бы был логическое И, а мне нужно ИЛИ как быть? поиск элементов через обычный метод .find() (тоже прикрепил )
Jamal
Slava
{ $or: [ { field1: …, }, { field2: …, } ] }
Pavel
Всем привет. Ребята подскажите пожалуйста. Развернул проект bitnami в кубере https://bitnami.com/stack/mongodb-sharded/helm. Конфиг по дефолту с двумя шардами. Захожу на монгос и как посмотреть что всё ок? В монгос под стандартным пользователем и сгенереным паролем провалился, но есть там что вообще тестовое ???? Show dbs ничего не показывает? Или этот проект совсем совсем пустой внутри и без тестовых баз? И привязаны ли шарды по умолчанию, что нужно сделать на начальных этапах??
Семён
Кто сталкивался с Illegal instruction при написании mongo в концоль. Помогите решить проблему
Alisher
Привет всем! Использовал сегодня mongodb для реализации мини проекта. И вообще не могу вникнуть) У меня есть вот такие данные: {"_id": ObjectId("610272dce453c718357013e5"), "dDate": "28-08-2021", "fly_from": "TSE", "fly_to": "ALA", "price": "112"}, {"_id": ObjectId("610272dce453c718357013df"), "dDate": "29-08-2021", "fly_from": "ALA", "fly_to": "TSE", "price": "35"}, {"_id": ObjectId("610272dce453c718357013d3"), "dDate": "28-08-2021", "fly_from": "MOW", "fly_to": "ALA", "price": "87"}, {"_id": ObjectId("610272dce453c718357013db"), "dDate": "29-08-2021", "fly_from": "ALA", "fly_to": "MOW", "price": "100"} Я хотел просто сгруппировать их по dDate и в каждой группе сортировать их по их price
Dmitriy
Коллеги, добрый день. Подскажите пожалуйста. Есть такой код: const {insertedIds: insertedItemIds} = await itemsCollection.insertMany(dataForCreate); console.log('1_5', insertedItemIds); В консоле вижу такое: 1_5 { '0': 610197c2dc06da21b14eef49, '1': 610197c2dc06da21b14eef4a, '2': 610197c2dc06da21b14eef4b } По документации в insertedIds лежит массив айдишников. В чем может быть проблема?
Максим
Brunello
боты атакуют)
Сергей
Ребят, привет Такой вопрос У меня есть 2 типа списания: Оплата услуг по тарифу И дополнительные услуги Как мне стоит организовать хранение Вижу 2 варианта В первом я для каждого типа создаю отдельную коллекцию Во втором делаю одну но с типом списания и всеми возможными полями Как обычно такое решается?
Сергей
Сергей
Сергей
Ну одна коллекция где в документе есть поле type и там лежит строковое значение какое списание было произведено
А еще такой вопрос Стоит ли заносить ссылку на тариф Или лучше запсать сюда все нужные значения тарифа? Тариф может измениться или его вообще удалят
Михаил
А еще такой вопрос Стоит ли заносить ссылку на тариф Или лучше запсать сюда все нужные значения тарифа? Тариф может измениться или его вообще удалят
Если именно списание - то лучше класть в сам документ, так как даже если прошло списание по тарифу и через секунду тариф удалили - клиент то платил по определенному тарифу, и в момент оплаты тариф существовал
Михаил
Ссылки на другие документы вообще лучше минимизировать, потом замучаетесь
Anton
Какое макс. количество можно поставить watch()’еров?
Юрий
Всем привет. Неправильно заимпортировал данные в коллекцию. Через filter({subs:$exist}), например отфильтровать не получается. Как отобрать неправильные документы, чтобы удалить?
Юрий
Эм find({ subs: { $exists: false } })
👍спасибо, сработало.
Alexander
Какое макс. количество можно поставить watch()’еров?
200 точно работает но базу грузит не слабо на М50 под нагрузкой
Максим
всем привет, как можно в схеме объявить поле, принимающее двумерный массив?
tmarket support
всем привет, кто может подсказать плз, есть структура type ReviewInitial struct { Id string `json:"id" bson:"_id"` Text string `json:"text" bson:"text"` Rating int32 `json:"rating" bson:"rating"` DealId string `json:"dealId" bson:"dealId"` ProjectId string `json:"projectId" bson:"projectId"` ReviewerId string `json:"reviewerId" bson:"reviewerId"` CreatedAt time.Time `bson:"createdAt"` Reviewer Reviewer `json:"reviewer" bson:"reviewer"` } здесь есть референсы на другие коллекции (projectId, ReviewerId) как мне лучше их хранить, просто строкой или кастовать в mongo objectId ? что-то никогда не задавался этим вопросом и вот задался) поидее в mongo objectId, для ускорения будущих aggregations и пр?
Ilya
Вечер добрый. Есть Replica Set. Вопрос следующий. Можно ли указать при подключении к базе в URI-строке readPreference=nearest (чтобы нагрузка распределялась по всем репликам равномерно при обычных, не транзакционных запросах), а когда запускается транзакция, то указать в transaction options readPreference=primary? Будут ли транзакции в таком случае работать корректно? Node.js+mongoose.
Michail
Всем привет, подскажите как составить агрегацию, что помимо $count выводило еще и записи , типо такого {countBeforeFilter : 1000, countAfterFilter : 200 ,result : []}
Ctr+
Добрый день. Вопрос по mongodb и производительности ее. Есть коллекция, примерно 500тыс документов (Document size 60MB, Total index size 57MB), очень часто обновляются записи $mongoData[] = [ 'replaceOne' => [ ['_id' => $document['_id']], $document, ['upsert' => true] обновляет в пике где-то 15000 - 20000 документов... когда растет выше 10Kops/s, начинаются проблемы с записью, они очень долгие, критичные в данном случае... Не обязательно проблема именно в количестве Kops/s это предположение... пробовал делить данные, кусками по 100, 500 запись... именно проблема когда 15000-20000 документов идет кусок. обычно менее 3 секунд выполняется, но когда выше, тогда проблема. монго 3.6, так же пробовал на 4.4.4 с репликасет, там еще выше Не пинайте тапками, я с монгой на вы.... Подскажите куда смотреть, возможно использование updateone даст лучше цифры. По ресурсам на сервере проблем нет, проц/сеть/диски не грузит, нагрузка маленькая на все кроме сети небольшая. ordered false Спасибо.
Salih
Есть такая модель: const userSchema = new mongoose.Schema({ name: { type: String, required: true, index: true }, surname: { type: String, required: true, }, patronymic: { type: String, required: true, }, }); Будет осуществляться поиск по полям name, surname, patronymic (возможно одновременно или по отдельности), то такой индекс мне поможет? userSchema.index({ name: 'text', surname: 'text', patronymic: 'text' });
Salih
Текст не такой шустрый, но все равно быстрее чем без него
А если так - userSchema.index({ name: 1, surname: 1, patronymic: 1 }), будет быстрее?
Joe
Это быстрее, это по моим наблюдениям. У них, как я понял, текст индекс сделан чтобы был
Aryn
Всем привет! Есть Collection users, там есть поле channels содержащее список из чисел [1, 2, 3] Вот как из этого списка, удалить одно значение? (напр. 1)
Aryn
$pull по значению.
Ну, я вот так удаляю все данные о юзере: db.delete_one({'user_id': user_id}) а как удалить из channels одну?
Aryn
updateOne(..., {$pull: {channels: 1}})
А вот ещё, есть поле some Как его очистить?
Aryn
он должен содержать null, когда содержал "text"
Leksey
всем привет! подскажите, не знаю в какую сторону смотреть и что думать общий вопрос - почему растет количество дискрипторов (открытых файлов) у MongoDB? веб приложения работает в штатном режиме в графане наблюдаю следующее (open files): 5.7K, ..., 10.9K, ..., 21.5K за сутки количество открытых файлов вырастает примерно на 20K используется node.js (mongoose) соединение постоянное сейчас еще проверю количество соединений (растет или нет) какие еще моменты стоит проверить? Ubuntu
Leksey
ситуация в том, что черед двое/трое суток выходим за лимит в 64K
Leksey
каждый раз увеличивать лимиты - не дело (они растут с каждым днем)
Dmitry
Всем привет. mongodb 3.6.23, shard cluster Как правильно смотреть сессии в базе config коллекции system.sessions? Вроде в доках везде пишут просто обычный запрос на эту коллекцию db.system.sessions.find(). Но мне выдает ошибку авторизации: ``` mongos> db.system.sessions.find() Error: error: { "ok" : 0, "errmsg" : "not authorized on config to execute command { find: \"system.sessions\", filter: {}, lsid: { id: UUID(\"9df044dc-ceb9-4b89-baac-084e205ae1b3\") }, $clusterTime: { clusterTime: Timestamp(1627980900, 115), signature: { hash: BinData(0, CE0080FB41D7190D451D7BF1940AB0D92347AA23), keyId: 6967046096438689837 } }, $db: \"config\" }", "code" : 13, "codeName" : "Unauthorized", "operationTime" : Timestamp(1627980910, 80), "$clusterTime" : { "clusterTime" : Timestamp(1627980910, 80), "signature" : { "hash" : BinData(0,"mXIdk48sbWF2pxp7Tiu9q/EXr1k="), "keyId" : NumberLong("6967046096438689837") } } } ``` При этом я это делаю от рута: ``` mongos> db.runCommand({connectionStatus : 1}) { "authInfo" : { "authenticatedUsers" : [ { "user" : "root", "db" : "admin" } ], "authenticatedUserRoles" : [ { "role" : "root", "db" : "admin" } ] }, "ok" : 1, ``` Пробовал как с mongos это сделать, так и с replicaSet configsvr, и из другого любого шарда. Саму проблему из-за которой хотел смотреть сессии уже решил (https://jira.mongodb.org/browse/SERVER-36104) но меня смущает сам факт что я не могу посмотреть эту коллекцию.
Dmitry
лимиты указаны как в доке mongodb ulimit -n - 64K
Я полагаю ты запускаешь через systemd. Поэтому нужно указать это в .serivce файле ``` LimitNOFILE=64000 LimitNPROC=64000 ```
Dmitry
каждый раз увеличивать лимиты - не дело (они растут с каждым днем)
а откуда ты взял что это дескрипторы именно коннектов? Проверь для начала, сколько там коннектов к базе, а не просто всех открытых дескрипторов файлов
Leksey
Я полагаю ты запускаешь через systemd. Поэтому нужно указать это в .serivce файле ``` LimitNOFILE=64000 LimitNPROC=64000 ```
верно cat /proc/PID/limits - все верно показывает нет смысла указывать лимиты в сервисе лимиты жестко в системе указаны проблема в том, что идет бурный рост открытых файлов и рост связан с процессом mongo
Aryn
Есть запись: { _id: ..., user_id: ..., channels: [ { channel_id: 123, some: text }, { channel_id: 456, some: text } ] } Вот как выполнить поиск по channel_id: 123 ?
Cloud
find({ channels: {$elemMatch: {channel_id: 123}})
προχωρέω
Всем добрый вечер! Подскажите пожалуйста, считается ли плохой практикой создание text индекса состоящего из 10-ти полей? Спасибо!
Michail
Подскажите, можно ли сделать фильтрацию после того как сделал Populate без использования агрешации
Nick
Всем добрый вечер! Подскажите пожалуйста, считается ли плохой практикой создание text индекса состоящего из 10-ти полей? Спасибо!
без разницы, там есть возможность просто wildcard влепить и подходящие поля будут индексироваться