данила
новые
Nick
новые
тогда проверяйте что в базе данные действительно есть и типа поля у даты не поменялся, просто так при использовании сортировки данные не теряются
Maksym
скажите как через $pull удалить записи массива без условий ? Ну то есть сделать массив пустым
Maksym
ну вот у меня ничего не работает если честно
Maksym
вот я нахожу из коллекции нужный документ и делаю массив пустым
Maksym
но он такой же заполненный
Nick
вот я нахожу из коллекции нужный документ и делаю массив пустым
currentCart - это объект в js, соовтетственно у него надо просто сделать currentCart.products = []; после чего currentCart.save()
Maksym
а через апдейт нельзя?
Maksym
ему же save не нужен
Nick
если хочется через нативный апдейт (update_one), то туда надо передат ьусловие для выборки и собственно сам апдейт. Выше вы написали только часть с апдейтом, пропустив условие
Nick
поулчится чтото вроде CartModel.updateOne( {userId: request.user._id}, {$set: {products: []}} )
Nick
за синтаксис не ручаюсь, но суть думаю понятна
Maksym
почему нельзя отдельно найти и отдельно обновить
Maksym
зачем тогда вообще нужен updateOne
Nick
во времена когда findAndModify не было - был нативный updateOne
Nick
хотя тогда и updateOne не ыбло и нужно было явно указать флаг multy: true если хотелось обновить не один док
Maksym
у меня до этого работал отдельно поиск и отдельно обновление, что сейчас случилось непонятно
Maksym
pull set не работают
Maksym
не знаю почему
Nick
pull set не работают
давайте еще раз, как вы делали и были ли ошибки при работе с бд?
Maksym
тут currentProduct такой же js обьект
Maksym
и нативный апдейт к нему работает
Maksym
разница в том что я скобки указываю в которых конкретное поле указываю которое надо обновить
Maksym
но так же можно делать
Nick
ну вот пример который работает
очень странно, ведь без await это не должно было работать
Nick
и нативный апдейт к нему работает
а как проявялется "работает"? как првоеряете
Maksym
а где его там надо ставить? причем тут await
Nick
а где его там надо ставить? причем тут await
https://mongoosejs.com/docs/api/model.html#model_Model.updateOne
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
тогда все должно работать
ну незнаю, у меня $set не хочет конкретное поле обновлять
Maksym
работало только если весь обьект передавать
Maksym
ну то есть request.body
Maksym
других причин не вижу
Maksym
может так и должно быть
Nick
ну незнаю, у меня $set не хочет конкретное поле обновлять
таких познаний в монгусе нет, так что видимо не помогу. Но ощущение остается что гдето подавляется ошибка
Maksym
таких познаний в монгусе нет, так что видимо не помогу. Но ощущение остается что гдето подавляется ошибка
ну может быть , но ставить условие для обновления смысла нет, он уже найден
Maksym
Да и мне уже один способ помог, просто интересно что здесь не так
Nick
ну может быть , но ставить условие для обновления смысла нет, он уже найден
условие это если бы на модели, а там для документа оказывается это действительно упрощено и условие не нужно писать
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).
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 только
Александр
Я регулярно делаю копирование таким способом. Особых проблем не было. Но обязательно надо проверять на новом месте.
Спасибо. Короче оно ругалось, что нужно было подкрутить настройки файловой системы https://docs.mongodb.com/manual/administration/production-notes/#kernel-and-file-systems Да и потом права сделать правильными, копировал с Openshift, а пробовал на локальном Docker
Андрей
Привет. Монга в первом 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
всем привет! а можно как-то обновить определенное кол-во документов? например у меня коллекция на 100 документов, а обновить нужно 30 только
Монго обновляет по условию и исли у вас есть какойто критерий для выборки, который выделит эти 30 из 100, то можно.