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
отлично
yopp
yopp
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
Можно
yopp
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
Й
Всем привет. Настроил шардинг для коллекции теперь хочу померять на сколько улучшилось/ухудшилось состояние кластера.
Подскажите, пожалуйста, хороший инструмент по бенчмарку кластера
yopp
Й
Согласен)
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 вызывает значительную задержку с обработкой запроса?
Gor
Kozimjon
Kozimjon
Ребят, прям срочно. Что тут не так? У меня серв висит
Kozimjon
127.0.0.1 - так и должно быть? Или 0.14?
Alex
Посмотри лог запуска сервера
Alex
/var/log/mongodb/mongodb.log
Скорее всего он тут
Serhii
Yurii
Ребята есть у кого то екзампл транзакций mongoose/express с async/await? И надо ли ставить run-rs npm module
yopp
MⅨ
Подскажите нубу как мне проложить путь ниже через ObjectID
MⅨ
У меня документ в нем _id: ObjectID() и допустим todos: [{ _id: ObjectID(), name: todo1}, {ObjectID(), name: todo2}]
MⅨ
Ну то есть collection('todo_boards').findAndReplace(...)
MⅨ
просто сделать '${_id}.todos' не получается. Ведь _id это не стринга
Anonymous
доброй ночи. хочу сделать мультисайтовую цмс. сначала думал под каждый сайт делать отдельную бд, но что-то это сильно сложно оказалось - несколько подключений в одном приложении, да еще и надо динамическое создание новых сайтов/бд. как насчет все хранить в одной?
yopp
MⅨ
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"}})
MⅨ
AstraSerg
MⅨ
Anonymous
День добрый!
Ранее нормально не работал с MongoDB
Сейчас проблема
Ставил на сервер монгу без всяких настроек (Ubuntu), далее проект жил и сейчас 10GB данных в базе
Жрет CPU (их 32 если не ошибаюсь), диск SSD
По htop забиты все CPU (свыше 50%) только монгой
Как вариант придумал - шаридинг с репликами
Что скажете? Или какие нормальные решения могут быть?
yopp
yopp
Да
Anonymous
Т.е. по сути будет отслеживать медленные запросы
yopp
https://docs.mongodb.com/manual/tutorial/analyze-query-plan/
Anonymous
yopp
В целом, перед тем как выбирать решение, стоит разобраться в причинах проблем. Шардинг это сложно и очень дорого
Anonymous
Поставьте порог срабатывания выше 250мс
Вообще при таких объемах следует на шардинги переходить?
Или логика такая что изначально проверим что с запросами, попробуем оптимизировать и если не поможет то на шардинги переходить следует, верно?
Anonymous
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 или это совсем по другому нужно решать?
Anton