Serhii
await Order.updateOne( { _id: id }, { $set: { 'point.$.document': '' } } ).lean(); Всем привет, как обьновить в массиве point, в обьектах, поле document, средствами mongodb(вариант пройтись по документам циклом изменить и засейвить не подлходит)
Ilya
$[] вроде надо использовать
Ilya
то есть await Order.updateOne( { _id: id }, { $set: { 'point.$[].document': '' } } ).lean();
Ilya
но могу ошибаться
Serhii
@ilya_flakin благодарю, работает
Ilya
отлично
Pavel
Ужас какой, нет чтоб дать возможность нативно писать шаги, они туда накрутили какой-то свой DSL. Ни чем не смогу помочь. Попытайтесь пайплайн переписать используя примеры из документации
а, не сможешь подсказать, как выкинуть все города в один массив, а не так как у тебя, массив в нем массив cities, а в нем уже города. Мне просто общий список городов нужно спасибо! https://play.db-ai.co/m/XQN31JAtYAABLHvG/edit?key=NvkaFfbKyjw
Pavel
_id: null, и оставить addToSet
а можешь показать мне пожалуйста, а то я не работал с этим... Спасибо
Pavel
тоже не то)
Pavel
Спасибо, тебе что пытаешься помочь, смотри, как я сделал
Daniil
$unwind
Михаил
https://play.db-ai.co/m/XQTJiJAtYAABLH4c/edit?key=TrB1vy0m7Kw
Михаил
Вот так через ODM $ab->unwind('$city'); $ab->project() ->field('_id')->expression(1) ->field('name')->expression('$city.name') ->field('id')->expression('$city.id');
Михаил
Ничего не понял) Какой результат нужен?
Sardor
Ребят, если будет документ формата: { ... name: 'str', members: [ { id: 123, ... }, { ... } ] } можно как-нибудь проверить, есть ли определенный айди в этом документе в массиве members? По запросу монге, а не перебирая массив в коде
Josh
Можно
Bro
Ого этот спамбот везде проник
yopp
4.0.10 (May 31) ◦ 3.6.12 (Apr 8) ◦ 4.2.0-rc0 (Jun 5) События: • 17–19 июня, Нью-Йорк, Конференция: MongoDB World (900$ или 0$ с купоном dev100) • 10 июля, Москва, Первый митап нашего чята: MongoDB Meetup #1 (Бесплатно) • Плейграунд для запросов • Документация • Официальные курсы по MongoDB Stable: 4.0.10 | Bugfix: 3.6.12 | Legacy: 3.4.20 (Mar 13) | Dev: 4.2.0-rc0 (Jun 5) End of life: 3.2.21 (Sep ’18), 3.0.15 (Feb ’18)
yopp
А у нашего чята первый митап! 10 июля в Москве, в коворкинге RedFactory, совершенно бесплатно На этой встрече Слава @victor3 расскажет о том, почему не все транзакции одинаково полезны, а Алекс @dd_bb об инструментах для масштабирования. Записывайтесь вот тут: https://db-ai.timepad.ru/event/1002648/ Хотите выступить? Заполните заявку
Евгений
Спасибо за приглашение! К сожалению, не могу попасть живьём на митап. Будет ли вестись запись докладов?
Kozimjon
з""""бали @dd_bb
Oleg
ох вы бы знали, что сейчас творится в соседних чатиках
Oleg
у меня 3 канала по 3к+ народа
Oleg
залили цп
Oleg
просто онлайн стримом
Oleg
куча спама и прочего, в полуручном режиме
yopp
Внезапно: если кто-то есть в Геленджике и хочет встретится я буду там с сегодня до следующего понедельника :)
Will
Й
Всем привет. Настроил шардинг для коллекции теперь хочу померять на сколько улучшилось/ухудшилось состояние кластера. Подскажите, пожалуйста, хороший инструмент по бенчмарку кластера
Й
Согласен)
Serhii
подскажите, почему после остановки mongo shell, последующий запуск не работает пока не удалишь папку с db??? ERROR: Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
Gor
@dd_bb сталкивался с таким, что mongo query planner вызывает значительную задержку с обработкой запроса?
yopp
@dd_bb сталкивался с таким, что mongo query planner вызывает значительную задержку с обработкой запроса?
Да. Это у него нормальное поведение. По этому и есть кэш планов, чтоб планировщик каждый раз не дёргал хранилище
yopp
подскажите, почему после остановки mongo shell, последующий запуск не работает пока не удалишь папку с db??? ERROR: Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
Судя по ошибке вы запускаете монгу с разными движками. Явно укажите wiredtiger https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-storageengine Укажите явно путь к конфигу и там настройте wiredTiger https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-config https://docs.mongodb.com/manual/reference/configuration-options/#storage.engine
Kozimjon
Kozimjon
Ребят, прям срочно. Что тут не так? У меня серв висит
Kozimjon
127.0.0.1 - так и должно быть? Или 0.14?
Alex
Посмотри лог запуска сервера
Alex
/var/log/mongodb/mongodb.log Скорее всего он тут
Yurii
Ребята есть у кого то екзампл транзакций mongoose/express с async/await? И надо ли ставить run-rs npm module
yopp
запускаю одной и той же командой - `mongod —dbpath ./`
Укажите явно тип хранилища в параметрах при запуске
MⅨ
Подскажите нубу как мне проложить путь ниже через ObjectID
MⅨ
У меня документ в нем _id: ObjectID() и допустим todos: [{ _id: ObjectID(), name: todo1}, {ObjectID(), name: todo2}]
MⅨ
Ну то есть collection('todo_boards').findAndReplace(...)
MⅨ
просто сделать '${_id}.todos' не получается. Ведь _id это не стринга
Anonymous
доброй ночи. хочу сделать мультисайтовую цмс. сначала думал под каждый сайт делать отдельную бд, но что-то это сильно сложно оказалось - несколько подключений в одном приложении, да еще и надо динамическое создание новых сайтов/бд. как насчет все хранить в одной?
yopp
просто сделать '${_id}.todos' не получается. Ведь _id это не стринга
_id это ключ в корне документа. Если вы хотите выбрать документ по _id то вам необходимо добавить условие $eq по этому полю в findAndReplace См https://docs.mongodb.com/manual/core/document/#dot-notation См https://docs.mongodb.com/manual/tutorial/query-documents/
MⅨ
получился такой метод без $eq
yopp
Если вы пропустили: 10 июля у нашего чята первый митап в Москве. Записываетесь здесь: https://db-ai.timepad.ru/event/1002648/
MⅨ
db.inventory.update({ "_id": ObjectId("5d0b2b26884d431cbb1f7c06"), "content._id": ObjectId("5d0b2b26884d431cbb1f7c05") }, {"$set": {"content.$.type": "boolean"}})
yopp
А будет онлайн трансляция? Я в Латвии живу(
Попробуем, но за качество пока не ручаемся. На таймпаде есть билеты на трансляцию
Anonymous
День добрый! Ранее нормально не работал с MongoDB Сейчас проблема Ставил на сервер монгу без всяких настроек (Ubuntu), далее проект жил и сейчас 10GB данных в базе Жрет CPU (их 32 если не ошибаюсь), диск SSD По htop забиты все CPU (свыше 50%) только монгой Как вариант придумал - шаридинг с репликами Что скажете? Или какие нормальные решения могут быть?
Anonymous
Изучите профайлером, какие запросы тяжелые
Оно https://docs.mongodb.com/manual/reference/method/db.setProfilingLevel/?
yopp
Да
Anonymous
Т.е. по сути будет отслеживать медленные запросы
yopp
https://docs.mongodb.com/manual/tutorial/analyze-query-plan/
Anonymous
https://docs.mongodb.com/manual/tutorial/analyze-query-plan/
Кажется не для прода штука
yopp
Кажется не для прода штука
Поставьте порог срабатывания выше 250мс
yopp
В целом, перед тем как выбирать решение, стоит разобраться в причинах проблем. Шардинг это сложно и очень дорого
Anonymous
Поставьте порог срабатывания выше 250мс
Вообще при таких объемах следует на шардинги переходить? Или логика такая что изначально проверим что с запросами, попробуем оптимизировать и если не поможет то на шардинги переходить следует, верно?
Korostelev
Коллеги, привет. У меня есть Unifi controller от Ubiquiti , в нем для хранения различной статистики используется Mongo 3.4.18, по утилизации ресурсов хост машины проблем нет, оперативной памяти из 12 гигов свободно 4, нагрузка на CPU низкая, места разделе где находится БД достаточно. В последнее время замечено что mongo.log по нескольку раз в день вываливаются сообщения вида : 2019-06-18T22:46:34.036+0300 I COMMAND [ftdc] serverStatus was very slow: { after basic: 0, after asserts: 0, after backgroundFlushing: 0, after connections: 0, after dur: 0, after extra_info: 0, after globalLock: 0, after locks: 0, after network: 0, after opLatencies: 0, after opcounters: 0, after opcountersRepl: 0, after repl: 0, after security: 0, after storageEngine: 0, after tcmalloc: 0, after transportSecurity: 0, after wiredTiger: 0, at end: 2740 } ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 31157 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024000 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 65536 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited Помогите понять что это за ошибка и как ее исправить ?
Ilya
ПОдскажите по конфигурировании реплики. Делаю по иструкции https://rocket.chat/docs/installation/manual-installation/mongo-replicas/ . Запускаю mongod --port 27017 --dbpath /var/lib/mongodb --replSet rs01 --bind_ip localhost в консоле пишу rs.initiate()
Ilya
rs.initiate() { "operationTime" : Timestamp(1555674191, 1), "ok" : 0, "errmsg" : "already initialized", "code" : 23, "codeName" : "AlreadyInitialized", "$clusterTime" : { "clusterTime" : Timestamp(1555674191, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
Ilya
rs.status() { "operationTime" : Timestamp(1555674191, 1), "ok" : 0, "errmsg" : "Our replica set config is invalid or we are not a member of it", "code" : 93, "codeName" : "InvalidReplicaSetConfig", "$clusterTime" : { "clusterTime" : Timestamp(1555674191, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }
Alexander
Здравствуйте. Пара вопросов, но по Mongoose. Один из методов изменять документ - получить инстанс документа, типа let system = await System.findOne() // немного кода и вычислений system.balance += 10; await system.save() А если это хайлоад, запросы обрабатываются параллельно и может быть такое, что пока в документ системы добавляется баланс - где-то в другом месте он отнимается, и проводится другая операция над другим инстансом. Таким образом может возникнуть конфликт и какая-то из этих операция пройдёт неверно? Недежнее ли использовать System.updateOne() ? Мне кажется да, потому что updateOne делает запрос и сразу меняет состояние в одну транзакцию, без лишних ожиданий и вычислений.
Alexander
Я имею ввиду, что пока я работаю над одним инстансом - данные в нём уже могли устареть, потому что их изменили где-то в другом месте. Спасёт ли от этого повсеместное использование updateOne или это совсем по другому нужно решать?