Vadim
Но есть ли встроенные методы проверки, ради интереса?
Александр
Добрый день. Подскажите пожалуйста.... 1. С помощью exe сделал экспорт коллекции в файл имя_коллекция.metadata.json. Как его импортировать в пустую коллекцию ?
Nikita
не подскажите как с помощью Liquibase делать миграции не дописывая Changelog файл, а добавляя файлы с необходимыми изменениями в отдельную папку? На прошлом проекте так делали, только на связке PostgreSQL & Flyaway. Там проста sql-скрипт называли ВерсияФайла__ОписаниеСкрипта и сохраняли в отдельной папке. При старте проекта новые скрипты запускались. Не могу найти такой же функционал у Liquibase для Монго. Можете подсказать? Или хотя бы что гуглить надо
Google
Всем привет можете помочь как могу обновить данные через массив User.findOneAndUpdate( { id: { $in: ['finfo1', 'finfo2', 'finfo3', 'finfo4'] } }, { $push: { user_connect_id: ['login---NEW---'] }, }, { new: true, upsert: true, rawResult: true, multi: true } ) Так у меня неработает
Google
у меня в базе есть идишники есть массив ид я должен пройти и поменять статусы по этой ид
Google
тоист добавить $push
Nick
обычный updateMany
Google
updateMany могу пользоваться и сделать $push ?
Google
User.updateMany( { id: { $in: ['finfo1', 'finfo2', 'finfo3', 'finfo4'] } }, { $push: { user_connect_id: ['login---NEW---'] }, } ) Так правильно ?
Nick
выглядит правильно
Nick
хотя за $push точно не помню
Google
вот push неработает
Google
да
Nick
будет двумерный массив
Google
почему в push можноже конец добавить
Nick
ну так добавит массив из одной строки
Nick
чтобы добавилась просто строка - нужно убрат ьквадратные скобки
Александр
Lev
А много лукапы - очень плохо? Я хочу использовать их регулярно, чтобы каждый обработчик знал, обработал он конкретную запись или нет. То есть будет здоровенный лог и к каждой записи будет существовать еще одна в соседней коллекции. "Слукапив" - я рассчитываю понять, какие записи в логе новые и обработать их. Вариант с добавлением меток в сам лог я рассматриваю, но не очень хочу: не хочу чтобы в коде вообще было что-либо делающее что-то кроме insert для этого лога.
Lev
Я потом перейду на sql или какой нить... rethinkdb Но имеет ли постоянный запуск lookup какие то подводные камни?
yopp
если индекс есть, то нет
Иван
Здравствуйте! Есть проблема. Используем MongoDB.Driver 2.11.5 под C#. Недавно подняли replica set из 3-х машин (1 на запись, 2 на чтение). В строку соединения напихали кучу опций для реконнекта на чтение/запись в случает отвала соединения. Заметили, что при обновлении записей командой ReplaceOneAsync с опцией ReplaceOptions { IsUpsert = true } не обновляются записи. При этом операция добавления InsertOneAsync работает. Кто-нибудь сталкивался с похожей проблемой? Куда копать? Строка соединения, если поможет: mongodb://login:pwd@host1:port1,host2:port2,host3:port3/bd-name?replicaSet=rs0&readPreference=primary&retryWrites=true&retryReads=true&connectTimeoutMS=30000&socketTimeoutMS=30000&waitQueueTimeoutMS=30000&authSource=bd-name&authMechanism=SCRAM-SHA-1
Viktar
С таким конекшеном вы читаете с примари. А так в конекшене не вижу, что вам мешает апдейтить
Иван
Только это проблемы не решает. Может ли сама монга перестать записывать в бд?
Viktar
Врятли. И в логах она бы вам сказала.
Sergei
Подскажите как могу сделать default значение только день,месяц,год, без времени?
Ярослав
Эммм, я вот тут начал в некоторых моментах использовать монгу, но без особых извращений, в golang работать с монгой просто быстрее и удобней, ну и постольку-поскольку приходится ознакамливаться с самой монгой и вообще документоориентироваными бд (вопросов конечно возникает миллион учитывая что я привык к реляционным СУБД) Вот у меня есть уникальное поле name, и если у одного документа это поле стало null, второго такого документа появится не может? Это помоему сильно отличается от тех РСУБД)) Я для примера не могу придумать точный кейс.... Ну например у нас есть какое-то уникальное поле которое в случае чего надо обnullять, в РСУБД с этим проблем не будет, а в монге как быть? Такое невозможно?
Ярослав
А есть возможность как бы навесить уникальность но игнорить null values?
Nick
Нет
Nick
На самом деле можно, обычная транзакция с ручной организацией этой логики вполне решит эту задачу, ну и простой индекс без уникальности само собой
Ярослав
Жесть)
Nick
Можно попробовать partial index, но не помню может ли он быть уникальным
Sergey
Может: https://docs.mongodb.com/manual/core/index-partial/#partial-index-with-unique-constraint
Ярослав
Может: https://docs.mongodb.com/manual/core/index-partial/#partial-index-with-unique-constraint
Можно сделать что-то вроде db.users.createIndex( { username: 1 }, { unique: true, partialFilterExpression: { email: { $ne: null } } } ) ?
Arthur
Простой вопрос. Если у меня уже есть созданные объекты в бд по Schema. Если я добавлю в Schema еще что-то оно появиться у уже созданных объектов в бд?
Arthur
автоматически не появится
Придется писать миграцию? Можешь, посоветовать метод?
Arthur
Я надеялся, что schema.add добавит везде
Влад
Может кто знает. Есть коллекция данных о пользователях, делаю по ней агрегацию. Внутри нее отфильтровал данные, сгруппировал, отсортировал. Теперь нужно найти порядковый номер элемента с конкретным значением поля (оно уникальное) в этом отсортированном наборе данных. К как это сделать? На практике: есть топ пользователей по какому-либо критерию, сформировали его в ходе агрегирования, а теперь нужно вывести номер конкретного пользователя в этом топе, который его запросил.
Nick
Придется писать миграцию? Можешь, посоветовать метод?
указать в схеме дефолтное значение и проверить что ОРМ проставляет это поле в документе после выборки и просмотреть запросы чтобы они при необходимости отсутствие поле считали за дефолтное значение Ну или да скрипт с одним апдейтом, который просто апдейтит все доки и добавляет дефолтное значение
Влад
возможно вы ищите вот это? https://docs.mongodb.com/manual/reference/operator/aggregation/indexOfArray/#mongodb-expression-exp.-indexOfArray
Это индекс элемента в массиве, как я понимаю, применить к верхнему уровню его не получится. Представим, что агрегация на верхнем уровне выдает мне вот это: js [ {_id: 2, login: 'second_user', salesCount: 50} {_id: 3, login: 'third_user', salesCount: 35} {_id: 1, login: 'first_user', salesCount: 20} ] Каждый объект это по сути отдельный документ и в этом перечне документов я хочу найти порядковый номер пользовалетя с логином third_user.
yopp
Вам будет проще это сделать внутри вашего приложения
yopp
Положение документа внутри пайплайна определить нетривиально
Chern
всем привет, а можно как-то вытащить в терминале для всех пользователей вот такое вот db.user_bonuses.find({is_finished:0, drop:{$gte:0}},{_id:0, balance:1,user_id:1}).sort({created_date:1}).limit(1) Нужно вытянуть последнею строку по каждому пользователю Спасибо!
Влад
Спасибо за помощь)
Emad
Всем привет, попробую описать проблему, допустим в монго есть две коллекции POST и USER, у объекта USER есть поле массив с id всех постов данного юзера, допустим есть операция по удалению поста, соответственно в данной функции мы должны удалить объект поста из коллекции POST и удалить id этого поста у объекта юзера, (работа с двумя коллекциями), как я могу удостовериться в том что операция пройдет без проблем и как я могу откатить изменения, если на одном из этапов что то пойдет не так. (Допустим пост из коллекции POST удалился, а на удаление id у юзера все сломалось и id не удалился), , как я могу откатиться или что то в этом роде. Ибо начал рыться в транзакциях, там реплика сэт, три инстанса и тд. и тп. Нет ли более простого решения. Заранее спасибо
Nick
Всем привет, попробую описать проблему, допустим в монго есть две коллекции POST и USER, у объекта USER есть поле массив с id всех постов данного юзера, допустим есть операция по удалению поста, соответственно в данной функции мы должны удалить объект поста из коллекции POST и удалить id этого поста у объекта юзера, (работа с двумя коллекциями), как я могу удостовериться в том что операция пройдет без проблем и как я могу откатить изменения, если на одном из этапов что то пойдет не так. (Допустим пост из коллекции POST удалился, а на удаление id у юзера все сломалось и id не удалился), , как я могу откатиться или что то в этом роде. Ибо начал рыться в транзакциях, там реплика сэт, три инстанса и тд. и тп. Нет ли более простого решения. Заранее спасибо
есть - использовать не массив постов у юзера, а у поста указывать юзера и тогда ваше проблемы не существует как класс
Emad
есть - использовать не массив постов у юзера, а у поста указывать юзера и тогда ваше проблемы не существует как класс
Это был пример, работа с несколькими коллекциями или же использование нескольких write операций в ряд, довольно часто происходит в коде
Nick
Это был пример, работа с несколькими коллекциями или же использование нескольких write операций в ряд, довольно часто происходит в коде
возможно, но зачастую можно избавиться от таких проблем за счет изменения структуры данных
Nick
в остальных случаях если вам нужна строгая консистентность - тогда только транзакции
Nick
три инстанса необязательно
Nick
одного достаточно
Бобомурод
Всех горячо приветствую и желаю продуктивных выходных
Бобомурод
Ребята, как через .find({}) искать данные содержащие знаки (){}[]' итд?
Бобомурод
Ярослав
я думаю через \
Бобомурод
я думаю через \
Спасибо большое
Ярослав
Александр
Добрый вечер. Подскажите пожалуйста, как сохранить документ если его нет при UPDATE ? Если бы он там был - он бы обновил, а так, как его нет -не сохранил
Александр
Наверное не updateOne
Александр
updateOrCreate что то такое
Nikita
Nikita
Получаю такую херь, подскажите плс
Vladislav
Получаю такую херь, подскажите плс
а теперь в каком месте это вопрос по монге?