данила
новые
Nick
новые
тогда проверяйте что в базе данные действительно есть и типа поля у даты не поменялся, просто так при использовании сортировки данные не теряются
Maksym
скажите как через $pull удалить записи массива без условий ? Ну то есть сделать массив пустым
Nick
Maksym
Nick
Maksym
ну вот у меня ничего не работает если честно
Maksym
вот я нахожу из коллекции нужный документ и делаю массив пустым
Maksym
но он такой же заполненный
Maksym
а через апдейт нельзя?
Maksym
ему же save не нужен
Nick
если хочется через нативный апдейт (update_one), то туда надо передат ьусловие для выборки и собственно сам апдейт. Выше вы написали только часть с апдейтом, пропустив условие
Nick
поулчится чтото вроде
CartModel.updateOne(
{userId: request.user._id},
{$set: {products: []}}
)
Nick
за синтаксис не ручаюсь, но суть думаю понятна
Maksym
Nick
Maksym
почему нельзя отдельно найти и отдельно обновить
Maksym
зачем тогда вообще нужен updateOne
Nick
во времена когда findAndModify не было - был нативный updateOne
Nick
хотя тогда и updateOne не ыбло и нужно было явно указать флаг multy: true если хотелось обновить не один док
Maksym
у меня до этого работал отдельно поиск и отдельно обновление, что сейчас случилось непонятно
Maksym
Maksym
pull set не работают
Maksym
не знаю почему
Maksym
Maksym
тут currentProduct такой же js обьект
Maksym
и нативный апдейт к нему работает
Maksym
Maksym
разница в том что я скобки указываю в которых конкретное поле указываю которое надо обновить
Maksym
но так же можно делать
Maksym
а где его там надо ставить? причем тут await
Maksym
Maksym
ну так await мы ставим к модели
Maksym
а тут уже найденный обьект
Nick
ну на объекте просто вызываются методы модели
Maksym
им не нужны await
Maksym
да
Maksym
незнаю оно так работает
Maksym
или удаление
Maksym
точно также работает
Maksym
сначала по айди ищу потом удаляю
Maksym
а не извиняюсь туда await тоже нужно
Maksym
ну это сути дела не меняет
Nick
а так, тут значит дока от Document нужна https://mongoosejs.com/docs/api/document.html#document_Document-updateOne
Nick
тогда все должно работать
Maksym
работало только если весь обьект передавать
Maksym
ну то есть request.body
Maksym
других причин не вижу
Maksym
может так и должно быть
Maksym
Maksym
Да и мне уже один способ помог, просто интересно что здесь не так
Maksym
ну да логично
Nick
возможно туда можно в колбэк функцию чегонить накидать пологировать, но я примеров чет даже не нашел
Maksym
вот удалил все из массива руками и пытаюсь туда что-то записать
Maksym
тоже не хочет
Maksym
const currentCart = await CartModel.findOne({userId: request.user._id})
currentCart.updateOne(
{$set: {products: [{}]}}
)
Maksym
тут где-то ошибка)
Александр
На сколько актуально для MongoDB 3.6 бекапирование через файлы?
db.fsyncLock();
Потом tar или cp в новое место, просто во время tar получил
tar: /var/lib/mongodb/data/diagnostic.data: file changed
А пристатарте в новом контейнере с копией файлов получил такой вывод
WiredTiger error (1) [1642659386:444707][1:0x7f2c48d40a40], file:sizeStorer.wt, WT_SESSION.open_cursor: __posix_open_file, 715: /var/lib/mongodb/data/sizeStorer.wt: handle-open: open: Operation not permitted Raw: [1642659386:444707][1:0x7f2c48d40a40], file:sizeStorer.wt, WT_SESSION.open_cursor: __posix_open_file, 715: /var/lib/mongodb/data/sizeStorer.wt: handle-open: open: Operation not permitted
2022-01-20T06:16:26.444+0000 F - [initandlisten] Invariant failure: session->open_cursor(session, storageUri.c_str(), nullptr, "overwrite=true", &_cursor) resulted in status UnknownError: 1: Operation not permitted at src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp 72
2022-01-20T06:16:26.444+0000 F - [initandlisten] \n\n***aborting after invariant() failure\n\n
2022-01-20T06:16:26.456+0000 F - [initandlisten] Got signal: 6 (Aborted).
Viktar
На сколько актуально для MongoDB 3.6 бекапирование через файлы?
db.fsyncLock();
Потом tar или cp в новое место, просто во время tar получил
tar: /var/lib/mongodb/data/diagnostic.data: file changed
А пристатарте в новом контейнере с копией файлов получил такой вывод
WiredTiger error (1) [1642659386:444707][1:0x7f2c48d40a40], file:sizeStorer.wt, WT_SESSION.open_cursor: __posix_open_file, 715: /var/lib/mongodb/data/sizeStorer.wt: handle-open: open: Operation not permitted Raw: [1642659386:444707][1:0x7f2c48d40a40], file:sizeStorer.wt, WT_SESSION.open_cursor: __posix_open_file, 715: /var/lib/mongodb/data/sizeStorer.wt: handle-open: open: Operation not permitted
2022-01-20T06:16:26.444+0000 F - [initandlisten] Invariant failure: session->open_cursor(session, storageUri.c_str(), nullptr, "overwrite=true", &_cursor) resulted in status UnknownError: 1: Operation not permitted at src/mongo/db/storage/wiredtiger/wiredtiger_size_storer.cpp 72
2022-01-20T06:16:26.444+0000 F - [initandlisten] \n\n***aborting after invariant() failure\n\n
2022-01-20T06:16:26.456+0000 F - [initandlisten] Got signal: 6 (Aborted).
Я регулярно делаю копирование таким способом. Особых проблем не было. Но обязательно надо проверять на новом месте.
Alex
Всем добрый день. Подскажите плз, как правильно коннектиться к реплика сету?
Сделал 2 реплики в докере, объединил, они работают, репликация происходит, к каждой по отдельности можно подключиться, но к сету коннект не проходит
mongo --host my-mongo-set/mongo1:30002,mongo2:30001
2022-01-20T11:36:15.931+0300 W NETWORK [thread1] node: mongo1:27017 isn't a part of set: my-mongo-set ismaster: { ismaster: true, topologyVersion: { processId: ObjectId('61e8ff04182b903dd1fcfd8b'), counter: 0 }, maxBsonObjectSize: 16777216, maxMessageSizeBytes: 48000000, maxWriteBatchSize: 100000, localTime: new Date(1642667775931), logicalSessionTimeoutMinutes: 30, connectionId: 312, minWireVersion: 0, maxWireVersion: 13, readOnly: false, ok: 1.0 }
2022-01-20T11:36:15.931+0300 W NETWORK [thread1] node: mongo2:27017 isn't a part of set: my-mongo-set ismaster: { ismaster: true, topologyVersion: { processId: ObjectId('61e8ff04182b903dd1fcfd8b'), counter: 0 }, maxBsonObjectSize: 16777216, maxMessageSizeBytes: 48000000, maxWriteBatchSize: 100000, localTime: new Date(1642667775931), logicalSessionTimeoutMinutes: 30, connectionId: 313, minWireVersion: 0, maxWireVersion: 13, readOnly: false, ok: 1.0 }
2022-01-20T11:36:15.931+0300 W NETWORK [thread1] Unable to reach primary for set my-mongo-set
2022-01-20T11:36:15.932+0300 E QUERY [thread1] Error: connect failed to replica set my-mongo-set/mongo1:30002,mongo2:30001 :
Александр
Товарищи, привет! Есть ли в монго механизм получения события при добавлении или изменении записей?
Дмитрий
Александр
Спасибо!
Роман
всем привет!
а можно как-то обновить определенное кол-во документов?
например у меня коллекция на 100 документов, а обновить нужно 30 только
Андрей
Привет. Монга в первом WSL под 20.04 не могёт?
Александр
Решил смегрировать с 3.6 до ,5.0
Прочитал
https://docs.mongodb.com/manual/release-notes/5.0-upgrade-standalone/
Размотал там историю
Сделал так 3.6 -> 4.0 -> 4.2 -> 4.4 -> 5.0
db.adminCommand( { setFeatureCompatibilityVersion: "4.0" } )
db.adminCommand( { setFeatureCompatibilityVersion: "4.2" } )
db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
Как понять, что произошёл Update, а то сразу стартует и выполняю сразу. А если БД большая, может там что-то делаться будет и как узнать о результате или всё при старте делается?
Андрей
Андрей
При апгрейде по бинам кроме сэта фич совместимости ниче не надо.
Андрей
Если "Как понять, что произошёл Update" значит - где посмотреть, что я еду на новой версии СУБД, то db.version()
Nick