Vadim
Vadim
Но есть ли встроенные методы проверки, ради интереса?
Александр
Добрый день. Подскажите пожалуйста....
1. С помощью exe сделал экспорт коллекции в файл имя_коллекция.metadata.json. Как его импортировать в пустую коллекцию ?
Joe
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 }
)
Так у меня неработает
Nick
Всем привет можете помочь как могу обновить данные через массив
User.findOneAndUpdate(
{ id: { $in: ['finfo1', 'finfo2', 'finfo3', 'finfo4'] } },
{
$push: {
user_connect_id: ['login---NEW---']
},
},
{ new: true, upsert: true, rawResult: true, multi: true }
)
Так у меня неработает
это очень странно выглядит findOne и флаг multi: true, чтото гдето неправильно, вам наверняка нужен обычный updateMany
Google
Bogdan
Всем привет можете помочь как могу обновить данные через массив
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---']
},
}
)
Так правильно ?
Google
Nick
выглядит правильно
Nick
хотя за $push точно не помню
Google
вот push неработает
Nick
Google
да
Nick
будет двумерный массив
Google
почему в push можноже конец добавить
Nick
ну так добавит массив из одной строки
Nick
чтобы добавилась просто строка - нужно убрат ьквадратные скобки
Google
Александр
Lev
А много лукапы - очень плохо? Я хочу использовать их регулярно, чтобы каждый обработчик знал, обработал он конкретную запись или нет. То есть будет здоровенный лог и к каждой записи будет существовать еще одна в соседней коллекции. "Слукапив" - я рассчитываю понять, какие записи в логе новые и обработать их. Вариант с добавлением меток в сам лог я рассматриваю, но не очень хочу: не хочу чтобы в коде вообще было что-либо делающее что-то кроме insert для этого лога.
Nick
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ять, в РСУБД с этим проблем не будет, а в монге как быть? Такое невозможно?
Nick
Эммм, я вот тут начал в некоторых моментах использовать монгу, но без особых извращений, в golang работать с монгой просто быстрее и удобней, ну и постольку-поскольку приходится ознакамливаться с самой монгой и вообще документоориентироваными бд (вопросов конечно возникает миллион учитывая что я привык к реляционным СУБД) Вот у меня есть уникальное поле name, и если у одного документа это поле стало null, второго такого документа появится не может? Это помоему сильно отличается от тех РСУБД))
Я для примера не могу придумать точный кейс.... Ну например у нас есть какое-то уникальное поле которое в случае чего надо обnullять, в РСУБД с этим проблем не будет, а в монге как быть? Такое невозможно?
Null такое же значение как и любое другое в монге, если надо реализовать отсутствие значения, то удаляется поле
Ярослав
А есть возможность как бы навесить уникальность но игнорить null values?
Nick
Нет
Nick
На самом деле можно, обычная транзакция с ручной организацией этой логики вполне решит эту задачу, ну и простой индекс без уникальности само собой
Ярослав
Жесть)
Nick
Можно попробовать partial index, но не помню может ли он быть уникальным
Sergey
Может: https://docs.mongodb.com/manual/core/index-partial/#partial-index-with-unique-constraint
Arthur
Простой вопрос. Если у меня уже есть созданные объекты в бд по Schema. Если я добавлю в Schema еще что-то оно появиться у уже созданных объектов в бд?
Nick
Arthur
Я надеялся, что schema.add добавит везде
Влад
Может кто знает. Есть коллекция данных о пользователях, делаю по ней агрегацию. Внутри нее отфильтровал данные, сгруппировал, отсортировал. Теперь нужно найти порядковый номер элемента с конкретным значением поля (оно уникальное) в этом отсортированном наборе данных. К как это сделать?
На практике: есть топ пользователей по какому-либо критерию, сформировали его в ходе агрегирования, а теперь нужно вывести номер конкретного пользователя в этом топе, который его запросил.
yopp
Nick
Придется писать миграцию? Можешь, посоветовать метод?
указать в схеме дефолтное значение и проверить что ОРМ проставляет это поле в документе после выборки и просмотреть запросы чтобы они при необходимости отсутствие поле считали за дефолтное значение
Ну или да скрипт с одним апдейтом, который просто апдейтит все доки и добавляет дефолтное значение
yopp
Вам будет проще это сделать внутри вашего приложения
yopp
Положение документа внутри пайплайна определить нетривиально
Arthur
Nick
Это индекс элемента в массиве, как я понимаю, применить к верхнему уровню его не получится. Представим, что агрегация на верхнем уровне выдает мне вот это:
js
[
{_id: 2, login: 'second_user', salesCount: 50}
{_id: 3, login: 'third_user', salesCount: 35}
{_id: 1, login: 'first_user', salesCount: 20}
]
Каждый объект это по сути отдельный документ и в этом перечне документов я хочу найти порядковый номер пользовалетя с логином third_user.
https://stackoverflow.com/questions/42842256/how-to-get-ranking-position-of-a-mongodb-collection
Но если у вас очень много таких элементов, то производительность будет печальная, если надо постоянно это делать, то заводите отдельную коллекцию и ее обновляйте по событиям или время от времени
Chern
всем привет, а можно как-то вытащить в терминале для всех пользователей вот такое вот
db.user_bonuses.find({is_finished:0, drop:{$gte:0}},{_id:0, balance:1,user_id:1}).sort({created_date:1}).limit(1)
Нужно вытянуть последнею строку по каждому пользователю
Спасибо!
Влад
Спасибо за помощь)
Nick
Emad
Всем привет, попробую описать проблему, допустим в монго есть две коллекции POST и USER, у объекта USER есть поле массив с id всех постов данного юзера, допустим есть операция по удалению поста, соответственно в данной функции мы должны удалить объект поста из коллекции POST и удалить id этого поста у объекта юзера, (работа с двумя коллекциями), как я могу удостовериться в том что операция пройдет без проблем и как я могу откатить изменения, если на одном из этапов что то пойдет не так. (Допустим пост из коллекции POST удалился, а на удаление id у юзера все сломалось и id не удалился), , как я могу откатиться или что то в этом роде. Ибо начал рыться в транзакциях, там реплика сэт, три инстанса и тд. и тп. Нет ли более простого решения. Заранее спасибо
Nick
Всем привет, попробую описать проблему, допустим в монго есть две коллекции POST и USER, у объекта USER есть поле массив с id всех постов данного юзера, допустим есть операция по удалению поста, соответственно в данной функции мы должны удалить объект поста из коллекции POST и удалить id этого поста у объекта юзера, (работа с двумя коллекциями), как я могу удостовериться в том что операция пройдет без проблем и как я могу откатить изменения, если на одном из этапов что то пойдет не так. (Допустим пост из коллекции POST удалился, а на удаление id у юзера все сломалось и id не удалился), , как я могу откатиться или что то в этом роде. Ибо начал рыться в транзакциях, там реплика сэт, три инстанса и тд. и тп. Нет ли более простого решения. Заранее спасибо
есть - использовать не массив постов у юзера, а у поста указывать юзера и тогда ваше проблемы не существует как класс
Nick
Nick
в остальных случаях если вам нужна строгая консистентность - тогда только транзакции
Emad
Nick
три инстанса необязательно
Nick
одного достаточно
Бобомурод
Всех горячо приветствую и желаю продуктивных выходных
Бобомурод
Ребята, как через .find({}) искать данные содержащие знаки (){}[]' итд?
Бобомурод
Ярослав
я думаю через \
Ярослав
Александр
Добрый вечер. Подскажите пожалуйста, как сохранить документ если его нет при UPDATE ? Если бы он там был - он бы обновил, а так, как его нет -не сохранил
Александр
Наверное не updateOne
Александр
updateOrCreate что то такое
Nikita
Nikita
Получаю такую херь, подскажите плс