yopp
https://www.mongodb.com/docs/manual/reference/operator/update/pull/#remove-all-items-that-match-a-specified--pull-condition
Yevhenii
А у вас добавлены остальные шарады в конфигурацию? https://www.mongodb.com/docs/manual/reference/method/sh.addShard/
shards [ { _id: 'rs0', host: 'rs0/mongodb-rs0-0.mongodb-rs0.infra.svc.k8s.us:27017,mongodb-rs0-1.mongodb-rs0.infra.svc.k8s.us:27017,mongodb-rs0-2.mongodb-rs0.infra.svc.k8s.us:27017', state: 1, topologyTime: Timestamp({ t: 1691434502, i: 3 }) } ] оператор сам добавил, но могу ошибаться)
Андрей
В $pull вам необходимо указать условие для удаление документа. В вашем случае это «options.images.imageId: 1»
Пробовал вот так db.companies.updateOne({'options.images.imageId': 1}, {$pull: {'options.images.$': 1}}) Появляется ошибка Cannot use the part (images) of (options.images.0) to traverse the element
Андрей
Пробовал вот так db.companies.updateOne({'options.images.imageId': 1}, {$pull: {'options.images.$': 1}}) Появляется ошибка Cannot use the part (images) of (options.images.0) to traverse the element
И вот так пробовал одинаковая ошибка db.companies.updateOne({'options.images.imageId': 1}, {$pull: {'options.images.imageId': 1}})
Андрей
И вот так пробовал одинаковая ошибка db.companies.updateOne({'options.images.imageId': 1}, {$pull: {'options.images.imageId': 1}})
он прям нормально находит нужный объект в массиве и выводит в ошибке но я не понимаю почему ошибка появляется
Андрей
В $pull не нужно использовать $. Просто еще раз повторите условие из update
Нашел вот такую историю https://github.com/Automattic/mongoose/issues/7147 Попробовал вот так { $pull: { options: { images: { imageId: 1 } } } } Ошибка исчезла, но сам объект не удалился из массива, хотя ответ апдейта { acknowledged: true, modifiedCount: 1, upsertedId: null, upsertedCount: 0, matchedCount: 1 }
Андрей
ага, похоже не очень работает с dot notation. а вы уверены что у вас только один документы был с imageId: 1?
я еще по айди компании ищу запись то есть точно тот документ который нужен
yopp
Нашел вот такую историю https://github.com/Automattic/mongoose/issues/7147 Попробовал вот так { $pull: { options: { images: { imageId: 1 } } } } Ошибка исчезла, но сам объект не удалился из массива, хотя ответ апдейта { acknowledged: true, modifiedCount: 1, upsertedId: null, upsertedCount: 0, matchedCount: 1 }
Не заметил что у вас options тоже массив db.getCollection("images").updateOne( { name: "companyA" }, { $pull: { "options.$[].images": { imageId: 1 } } } ) db.getCollection("images").find({ name: "companyA" }); → { "_id": { "$oid": "64e5fe27f13f9f421a05beaa" }, "name": "companyA", "options": [ { "color": "red", "images": [ { "imageId": 2, "image": "image2" } ] } ] },
Mr.
Добрый день Не могли бы мне подсказать, почему я не могу добавить строки в базу данных Монго методом spread ?
Mr.
Can
Схему покажи
const fullUserData = new Schema({ login: String, name: String, family: String, middleName: String, role: String, phone: String, email: String, password: String, });
-
Потому, что ...regs это массив значений, от куда ему знать, куда именно подставить это значение
-
Вслучае, если вы прокидываете там объект(-ы), то надо сделать assign, чтобы это всё развернуть в один объект
Михаил
а еще чтото крутится на серваке? ощущение что память съедает не только монга но ее прибивают как самую прожорливую
да ничего почти только само приложения на фласке и nginx там в сумме 100мб будет максимум
Sergey
Коллеги, всем привет! Подскажите, а тут есть кто-нибудь, кто крутит монгу свыше 5.x версии в кубере?) Меня интересует потребление ресурсов с переходом на mongosh в exec проверках.
Sergey
Битнамовским чартиком ) и сразу воткнулся вот в эту фигню https://github.com/bitnami/charts/issues/10316
Sergey
Sergey
Зеленые стрелочки - это сколько MongoDB 4.4 потребляла в холостую Красные стрелочки - это сколько MongoDB 6.0 потребляет в холостую ))))
Yevhenii
Битнамовским чартиком ) и сразу воткнулся вот в эту фигню https://github.com/bitnami/charts/issues/10316
Зачем же так мучить себя) Когда есть оператор от комюнити и от percona
Sergey
Дык ) прикол в том, что дело не в перконе) А в том, что Mongo перешла с mongo на mongosh
Yevhenii
А у вас перкона оператор ?
Да, там бекапы вроде как 'правильные' реализованы. Но уже тикет на форуме с ошибками бекапов открыл)
Sergey
А можете показать как у созданного кластера монги от перконы оператора выглядят пробы ?
Sergey
Я хочу посмотреть как они ливнесс и реадинесс проверки реализовали 🙂 У битнамовского чарта там exec проверки через mongosh, вот они как раз и ушатывают по ресурсам.
Андрей
Кто-нибудь ресторил в линухах небольшие базы, но на несколько тысяч коллекций?
Андрей
Подвернулась базёнка весом в 5G, в которую напхали 3.5к+ коллекций. Это барахло в линухе ресторится только на сервере с 40G рамы и на любые параметры ему плевать. На серверах похилее рестор фэйлится, СУБД отстреливается. Воспроизводится абсолютно на всех версиях. error running create command: connection(localhost:27017[-5]) socket was unexpectedly closed: EOF В винде ресторится успешно, но тоже выжирает прилично рамы - 10G почти. Это фэйспалм какой-то 🤦.
Андрей
В смысле немного? 🤨 Эта база работает в реплике на серверах с 4G памяти.
Oleg
да, не увидел 5г цифру изначально, извините, а индексы сколько весят?
Андрей
да, не увидел 5г цифру изначально, извините, а индексы сколько весят?
Та 700 мб. Кастомных нет вообще, только _id дефолтные.
Андрей
Да это хозяйство надо приводить к вменяемому виду. Убивать всё, что не требуется, чего там много я уверен, а всё остальное мёрджить в одну коллекцию и пусть переписывают код на людской. Там по сути с виду всё одинаковое, разбитое по периодам. 50 лямов доков на 3.5к коллекций. Скриптовать что-то ради одного такого гуманоида я не буду, но сам факт такого поведения при ресторе меня удивил и заставил поприседать с разными версиями, параметрами, настройками окружения и ОСями.
Андрей
Зачем? Чтобы слить кучу кусков в один, ничего никуда не надо выгружать, всё делается внутри СУБД.
Андрей
Просто тому, кто хочет потом в случае моего отсутствия саппортить такой дебилизм с тоннами мусора по кускам, остаётся только посочувствовать.
Ilshat
Просто тому, кто хочет потом в случае моего отсутствия саппортить такой дебилизм с тоннами мусора по кускам, остаётся только посочувствовать.
Базу отдать в самообслуживание разработчикам, они перепишут код и просто грохнут кластер с переездом на новое
Lukaš 🇨🇿
Ребят, я поднял себе монгу шестую и сказал ей что она replica set состоящий сам из себя. Сделано это для сервера на котором разрабатывается/тестируется софт. Почему-то я не могу к ней подключиться без параметра directConnection. Это вариант нормы?
Yevhenii
Собственно, развернул кластер з 3 шардами, настроил шардирование для коллекции и запустил импорт 100гб в коллекцию. в sh.status() вижу следующее: { 'Currently enabled': 'yes', 'Currently running': 'no', 'Failed balancer rounds in last 5 attempts': 0, 'Migration Results for the last 24 hours': { '14': "Failed with error 'aborted', from rs1 to rs2", '25': "Failed with error 'aborted', from rs0 to rs2", '31': "Failed with error 'aborted', from rs2 to rs1", '32': "Failed with error 'aborted', from rs1 to rs0", '151': 'Success', '223': "Failed with error 'aborted', from rs2 to rs0" } } как полечить или больше информации увидеть?)
Sandarion
Привет всем) В проекте использую replica set и все методы API обернуты в транзакции. При повышении нагрузки в проекте (примерно до 1000 операций в секунду), транзакции начинают конфликтовать друг с другом и отдельные транзакции валятся. При этом получаю ошибку: Plan executor error during findAndModify :: caused by :: WriteConflict error: this operation conflicted with another operation. Please retry your operation or multi-document transaction. Подскажите пожалуйста, в каком направлении копать?
Sandarion
Смотрел в сторону переезда на PostgreSQL и использования deadlocks для избежания подобных ошибок Но времени на полноценный переезд нет, нужно какое-то более быстрое решение, которое позволит остаться на MongoDB
Sandarion
Или имеется в виду обработчик ошибок?
Air
domain.com/v1/items?page=1&start=2023-08-25 Есть endpoint который выдает все товары. Как правильно выдавать только товары от указанной даты до момента запроса? Такой формат времени ок или это не канон?
Air
а, это я писал для другого чата, но там дальше mongodb 😁 как в бд нормально записать timestamp и по нему же найти записи? я пытался new Timestamp() и там чет не то
Air
в итоге в бд записал new Date() и приходится искать так, как сделал выше
Air
давным давно делал так, но это же не ок, да?
Nick
domain.com/v1/items?page=1&start=2023-08-25 Есть endpoint который выдает все товары. Как правильно выдавать только товары от указанной даты до момента запроса? Такой формат времени ок или это не канон?
yyyy-MM-dd - формат даты нормальный для передачи в апи. В самой же монге для данных типа датавремя лучше использовать любой аналог Date из вашего языка (ну или явно ISODate если драйвер не умеет сам оборачивать) , который упрощает выборки и конвертацию дат на уровне БД. Хранить дату в виде числа, что делает таймстемп по сути, неудобно для выполнения запросов, ну и глазами если что в базе сложно понять что за дата
Anonymous
Приветствую. Пытаюсь запустить сервер монги, но ничего не выходит. Гуглил где-то полчаса — ничего не помогло
Anonymous
Anonymous
На винде всё нормально работало, на линуксе вот
Anonymous
Ваерволл
Уже решил
Akmal
what is wrong here?
Oyatillo
what is wrong here?
Usefindandnodify ni false qb qoygansiz
Oyatillo
true qilib qoyaymi?
Umuman ob tashasezam mayli
Akmal
raxmat
Andrey
Всем привет,можете подсказать как такой фиксить,15 мин назад все работало...
Andrey
Мб иза того что я использую VPN
Admin
как все поля схемы сделать обязательными сразу ?