Anonymous
использую monogoose. И у мне надо удалить объект в массиве по айди. Вот эта запись не работает: User.findOneAndUpdate({ _id: user._id }, { $pull: { posts: {_id: id} } });
Anonymous
у User есть свойство posts
Anonymous
id это айди поста
Anonymous
{ new: true } третьим аргументом
спустя щас я сделал filter, это костыль?
Frontend
Почему? Указывайте откуда и куда хотите перекинуть данные.
Так если укажу IP локалхоста, то подтянется БД локалхоста сервера, а не БД локалхоста машины, с которой стучусь по SSH
Ivan
Так если укажу IP локалхоста, то подтянется БД локалхоста сервера, а не БД локалхоста машины, с которой стучусь по SSH
эм, пробросте порты. Я не понимаю как у вас устроено все чтобы подсказать куда что писать.
Volodya
А где такие схемки удобно рисовать можно?
где удобно не искал, рисовал в
Volodya
но можно еще поискать ибо мне было не очень удобно делать
Alex
draw.io ещё есть
David
Всем привет! Подскажите плиз, что делаю не так. У меня есть таблица платежей, в каждом ряду есть поле "user" (id плательщика) и "amount". Мне нужно получить сколько суммарно каждый юзер потратил за все время db.getCollection('payments').aggregate([{"$group" : {_id : "$user", "my_field" : {$sum: "$amount"}}}]) У меня всегда my_field выходит 0, хотя это невозможно (сделать платеж на сумму 0)
Roman Khonichev
не удивительно... вы группируете по этому полю
Roman Khonichev
вынесите из группировки поле, получите то, что хотите посчитать
David
А как вынести, вы про "@amount" поле? Если выносить за скобки @group, то там же какое то ключевое слово должно стоять... Я ориентировался на этот пример: https://stackoverflow.com/a/17045377/11277611
Sergey
Всем привет, подскажите, пожалуйста, возможно ли в MongoDB получить запись и сразу же её изменить, чтобы другие потоки не могли обратиться к этой записи?
Sergey
что-то вроде блокировки, чтобы многопоточное приложение не могло не в своём потоке получить уже полученную запись в другом потоке
Roman Khonichev
А как вынести, вы про "@amount" поле? Если выносить за скобки @group, то там же какое то ключевое слово должно стоять... Я ориентировался на этот пример: https://stackoverflow.com/a/17045377/11277611
db.getCollection('payments').aggregate([ { "$group" : {'_id' : { 'user': '$user' }, 'my_field': { $sum: '$amount' }} } ]) если у вас существует поле amount и оно не пустое, то должно работать
Sergey
вопрос снимается, нашёл findAndModify, вроде оно
Евгений
Всем привет, нужна помощь Необходима консультация по Mongo DB 4.0.12 Первести ноду mongodb в режим сингл-сервер. При потере связи нода автоматом деградирует с запретом чтения-записи. Перводится ремаркиранием всех строк раздела replication в файле конфигурации /etc/mongod.conf, после правки перезапустить mongod. после перезапуска можно редактировать конфигурацию реплика-сета, на работу в режиме сингл-ноды это не повлияет. Mongo слейв-нода репликации mongodb. Введена в режим скрытой копии без права голосования на выборах мастера, т.е. никакой клиент реплика-сета к ней обращаться не будет. Необходимо корректно настроить Mongo DB в режим работы сингл ноды. После распада кластера настройки Mongo DB находятся в режиме реплики показать ход выполнения работы через демонстрацию экран не бесплатно естественно https://freelancehunt.com/project/neobhodima-konsultatsiya-po-mongo-4-0-12/1037137.html
Erlan
Всем привет, нужна помощь Необходима консультация по Mongo DB 4.0.12 Первести ноду mongodb в режим сингл-сервер. При потере связи нода автоматом деградирует с запретом чтения-записи. Перводится ремаркиранием всех строк раздела replication в файле конфигурации /etc/mongod.conf, после правки перезапустить mongod. после перезапуска можно редактировать конфигурацию реплика-сета, на работу в режиме сингл-ноды это не повлияет. Mongo слейв-нода репликации mongodb. Введена в режим скрытой копии без права голосования на выборах мастера, т.е. никакой клиент реплика-сета к ней обращаться не будет. Необходимо корректно настроить Mongo DB в режим работы сингл ноды. После распада кластера настройки Mongo DB находятся в режиме реплики показать ход выполнения работы через демонстрацию экран не бесплатно естественно https://freelancehunt.com/project/neobhodima-konsultatsiya-po-mongo-4-0-12/1037137.html
Реконфиг вроде помогает
Google
Всем привет можете помочь как можно сделать в Mongodb такую вешь, У пользователя есть в балансе 70$ скажем он сделал запрос на покупку на сумму 40$ - как заблокировать ещё не завершенный запрос с ( TRANSACTION ) ( SELECT FOR UPDATE , COMMIT, and ROLLBACK )
Google
что бы не сделал одновременный запрос на списание с баланса, как зашитить ?
Nick
что бы не сделал одновременный запрос на списание с баланса, как зашитить ?
просто не закрывайте транзакцию. Открыли, проверили наличие баланса, дождались пока юзер подтвердит действие, сделайте снятие, закройте транзакцию. Если ктото изменит баланс параллельно, то не закоммитится. Ну или временно кудато переводить деньги, но тогда скорее всего замучаетесь возвращать
Google
Да в можно не могу решить эту
Google
в инете поискал несмог сам найти полезную инфу тут же спец есть может скажет как сделать или правильно искать
Google
в Mysql есть
Google
как делать ?
Danil
Ты какой яп используешь?
Google
В Mongodb
Danil
Ну с node js не знаком, ну условия там есть?
Kinderwond
Стек Node js
Пихай все транзакции в очереди Типо Bull основаный на редис очередях
Google
Bull это в Mongodb ?
Kinderwond
Bull это в Mongodb ?
https://www.npmjs.com/package/bull
Google
ну тут redis а в Mongodb работать будет ?
Kinderwond
Либо сам напиши брокера который будет принимать сообщения и складывать в сихронную FIFO
Kinderwond
ну тут redis а в Mongodb работать будет ?
На уровне mongodb ты не сделаешь Один из недостатков монги - отсутствие консистентности информации(в отличии от mysql, postgresql) Поэтому нужно решать это на более высоком уровне (например на уровне ноды)
Google
М да спасибо похоже надо перейти на postgresql
Anton
Хранилище заполнилось на 100% , монга не дает коннектиться: Connection refused. Что в таком случае делать?
Сергей
Ребят, подскажите как реализовать вот такую логику?
Сергей
Сергей
Сергей
Ребят, подскажите как реализовать вот такую логику?
Мне нужно получить сокращенную версию content А сам контент доставать не нужно
Сергей
Разобрался
Anton
Разобрался
Я конечно не придираюсь к коду но у вас async метод который не использует в своем теле await. Иначе говоря async можно убрать
Maksym
Или это не так работает
Roman
А с Атласом все нормально? >nslookup cluster0.ojrbm.mongodb.net Address: 10.2.0.1 *** UnKnown не удалось найти cluster0.ojrbm.mongodb.net: Server failed
Roman
https://status.cloud.mongodb.com/
Спасибо. Буду смотреть со своей стороны.
Roma
подскажите как сделать такое преобразование полей из Object: {a: 1, b: 2, c: 3} в Array: [ {a: 1}, {b: 2}, {c: 3} ]
dnacd 🦜
народ как правильно написать запрос есть пост с полем "tags": [ "tag", "parsing" ] мне нужно посчитать все посты например с именем тега "tag"
dnacd 🦜
find({tags: "tag"})
уже решил {"tags": {"$in": [tag_name]}}
Just
Всем привет Такой вопрос Есть Категория, она содержит в себе поле products, где лежат рефы на продукцию Типа: Category{ products:{ "1": ObjectID("..."), "2": ObjectID("..."), ... } } Как мне получить все категории, где лежат продукты определенного названия? Я получил через populate все названия продукции и отобразил только те элементы, где есть продукция с нужным названием, но как отфильтровать категории, где products null?
Just
Этим в populate я получаю все подходящие мне категории, но как убрать теперь те варианты, где поле теперь null?)
Anton
А $lookup работает по полю Object? Или только по атомарным типа: число, строка, булеан...?
Nick
А $lookup работает по полю Object? Или только по атомарным типа: число, строка, булеан...?
интересный вопрос)) а что хочется именно обыекты матчить?
Anton
интересный вопрос)) а что хочется именно обыекты матчить?
Ага, в таком поле-объекте куча параметров. Вот find() работает и матчит по объектам
Just
По моему вопросу никто не знает?)
Just
$and: [ ваше .... $exists:true, $ne: null ]
оно проверяет - матчится ли данный реф и не пустой ли он изначально, так? А проблема в том, что я на выходе получаю null в документах, где поле не заматчилось и мне нужно в этом же запросе этот документ исключить Есть еще 2 варианта конечно - отфильтровать jsом,либо делать доп запрос к полученной коллекции, но первый не совсем подходит, а второй не совсем оптимизированный на мой взгляд))
Illia
Господа, подскажите, плиз, как сделать lookup для глубоко вложенного массива с обьектами? Надо в 11 строке подтянуть док с другой коллекции
Illia
Illia
угу
Nick
чета такое поулчается db.getCollection('look_3_nest_a').aggregate([ { $lookup:{ from: "look_3_nest_b", foreignField: "id", localField: "ar1.ar2.ar3.to_b", as : "on_lvl1" }}]) в on_lvl1 будет массив всех подтянутых объектов, протащить их на тертий уровень не поулчится вменяемы способом, прощем потом по id сопоставить из ответа в look_3_nest_a { "_id" : ObjectId("620bd1157817c77d6847531f"), "ar1" : [ { "n" : "1_lvl", "ar2" : [ { "n" : "2_lvl", "ar3" : [ { "n" : "3_lvl_1", "to_b" : "1" }, { "n" : "3_lvl_2", "to_b" : "2" } ] } ] } ] } в look_3_nest_b { "_id" : ObjectId("620bd1837817c77d68475371"), "id" : "1", "v" : "1_" }
Just
если надо результирующий массив отфильтровать то можно заиспользовать https://docs.mongodb.com/manual/reference/operator/aggregation/filter/ если же надо из потока доков выкинуть лишние, то аналогично через стейдж $match
В общем я так и не нашел рабочий вариант, в доке покопался - не помогло) Агрегацию не изучал, решил пока фильтровать jsом, но если вам не сложно - я бы посмотрел готовое решение, чтобы потом разобраться Спасибо)
Bohdan 🕊️
Привет, ребят, помогите пожалуйста, почему-то не могу запустить mongosh Установил через brew (мак) и теперь эта ошибка..
Bohdan 🕊️
Один раз сработало, потом перезапустил terminal и опять перестало работать. Запускал brew services тоже.
fλüggåɘnk∂€čhiœßøλ∫ên
Bohdan 🕊️
Да
Bohdan 🕊️
Та вроде как опять заработало, дело времени
fλüggåɘnk∂€čhiœßøλ∫ên
Та вроде как опять заработало, дело времени
tail -f ~/.mongodb/mongosh/<LogID>_log Что в логах есть?