Abilmansur
Всем привет. Возможно ли посчитать количество детей определенного parent-a используя mongo? Я читал в документации про деревья, но они, как я понял, считают/находят только напрямую связанных детей, не внуков.
Anonymous
mongoose возвращает объекты в _doc и их не получается редактировать, у кого-нить было такое?
Daniil
он возвращает свои объекты, их нельзя редактировать, для преобразования в обычный js объект нужно вызвать метод .toObject()
Anonymous
но работало
Daniil
Работало потому у монгус-объекта есть метод toJSON (который в общем то внутри аналогичен методу toObject)
Daniil
А JSON.stringify вызывает этот метод у объектов, которые ему передали и использует то, что он вернул в качестве результата преобразования объекта в json
Daniil
Также если вы делаете запросы через .find/.findOne можно добавить в конце .lean(), что также вернет чистые JS-сущности а не mongoose.Document
Пр. Вова
Пишу строку: console.log(MongoClient1.db('test').collection('cities').find()); а в итоге получаю не свои 3 строки данных а огромный объект Cursor {..., в чем может быть проблема?
Пр. Вова
а такие функции как pretty и вовсе не знает.
Aleksandr
await нужно сделать или .then
Aleksandr
Или колбек передать в find
Пр. Вова
а Promise { <pending> } после MongoClient1.db('test').collections() тоже из-за этого?
Aleksandr
Ну да, оно асинхронное же все
Пр. Вова
Ок, щас буду вникать, спасибо.
Пр. Вова
Всем привет, ищу человека который мог бы помочь разобраться с работой асинхронных функций в монге и телеграмме. Желательно Украина. Пишите в личку. Спасибо.
Пр. Вова
в среде node.js
Anonymous
Такой вопрос. Хочу сохранять форматированные посты юзеров (со списками и другими html-тегами) в коллекцию монги (предварительно utf-кодировав). Нормальная практика или я что-то изобретаю?
Stepan
Доводилось что-то подобное делать, в принципе жить можно. Только если постов много будет, коллекция весить порядочно будет
Даниил (Onix)
Друзья, всем привет. Я искал операции для множественного действия. Нашел инсерМэни и апдейтМэни, а saveMany не нашел, он существует?
Aleksandr
есть bulkWrite
Даниил (Onix)
есть bulkWrite
ну да, но булк, как я понимаю, пишет в определенную коллекцию
Даниил (Onix)
а у меня один юзер в две коллекции пишется
Даниил (Onix)
async.parallel([newUser.save, newStudent.save], callback); - оригинальный код Я хотел заменить на Promise.All или на insertMany
Даниил (Onix)
но ни то, ни другое не обеспечивает нужный смысл промисы могут сохранить 1 из 2 (мне надо всегда 2 из 2), инсерт не обеспечит апдейт
yopp
но ни то, ни другое не обеспечивает нужный смысл промисы могут сохранить 1 из 2 (мне надо всегда 2 из 2), инсерт не обеспечит апдейт
Если у вас связанные операции, с гарантией «все или ничего» то вам нужны транзакции.
Kinderwond
Всем привет! Собираюсь изучить монгу, подскажите сайты/курсы(бесплатные) с обьяснением работы монгы под капотом
Bro
Mongo University
Bro
Прям на сайте монги
NCR
Здравствуйте. Подскажите пожалуйста, реально ли в query добавить каунтер из другой коллекции?
NCR
Там не знаю, есть некая сущность, у неё есть несколько подчинённых статей и их надо посчитать с другой коллекции
Aleksandr
зависит от того что там конкретно, так-то в общем случае возможно при помощие aggregate и $lookup
NCR
Окей, спасибо
NCR
В гугле забанили, за то что никак не смог сформулировать запрос, потому написал, теперь-то нашёл
Alexander
кто знает, есть aggregation, и в project перечислен набот полей. есть ли способ форсированно включить в ответ эти поля, даже если они не определены в документе (null - подойдет)?
Askhat
Ребят. Проблема с mongo. Пришла ошибка MongoNetworkError read ETIMEDOUT Из-за чего такое может быть?
Askhat
И можно ли на ноде сделать переподключение к бд или там как то ноду перезапускать? Все время делаю руками
Askhat
Добавлял слушателя на on error. Не помогает
Alexander
т.е. есть $project: { name: 1, some_field: 1 } для документа { name: «myname» } хочу получить {name: «myname» some_field: null}
Alexander
в принципе да, но это нужно для каждого ключа прописывать. возмонж, есть вариант массовый.
Alexander
но уже спасибо
Askhat
Массовый вряд-ли. Не знаю
Askhat
А сколько у тебя полей?
Askhat
Если их прям совсем много, то чем тебе мешает это программным способом сделать?
Alexander
штук 30, но это не в обдном месте но не такая проблема завернуть это по аналогии при формировании пайпа
Alexander
спасибо
Askhat
В целом можно как бы пайп сам спрограммировать да
Alexander
это - норм. просто, может быть был какой-то модификатор, про который я не знаю - и тогда это было бы оверинжененрингом
Askhat
Я думаю это было бы ресурсозатратной операцией. И вообще лучше запрос сделать без таких примочек, а потом сформулировать ответ как полагается Как мне кажется :)
Alexander
блин, еще тупой вопрос есть документ у него embedded массив объектов т.е. типа { name: «alex», rooms: [ { _id: 1, name: «r1» }, { _id: 2, name: «r2» } ] } я делаю на это аггрегацию, и как мне в project, если я хочу вернуть не room.name, а модифицировать его - сослаться на name конкретной итерации т.е. { $project: { rooms: { _id: 1, name: «$name» } } } на что заменить $name?
Alexander
не понял - other_name - в примере нет - нет уровня вложенности - если добавить - так не отрабатывает
yopp
не понял - other_name - в примере нет - нет уровня вложенности - если добавить - так не отрабатывает
• мысленно замените на любое имя атрибута • в условиях задачи вы этого не указали. Используйте dot notation («$top_level.second_level»). Но придётся полностью повторить структуру • если у вас что-то конкретное не работает, выложите свой кейс на play.db-ai.co
yopp
Хотя на мой взгляд явное перечисление отсутствующих атрибутов редко является оправданным
yopp
Это же json, отсутсвие атрибута и есть null
Alexander
блин, еще тупой вопрос есть документ у него embedded массив объектов т.е. типа { name: «alex», rooms: [ { _id: 1, name: «r1» }, { _id: 2, name: «r2» } ] } я делаю на это аггрегацию, и как мне в project, если я хочу вернуть не room.name, а модифицировать его - сослаться на name конкретной итерации т.е. { $project: { rooms: { _id: 1, name: «$name» } } } на что заменить $name?
> мысленно замените на любое имя атрибута сделано во втором и 3 пункте >в условиях задачи вы этого не указали из моего сообщения >у него embedded массив объектов указано. пример так же есть >$top_level.second_level мне нужно не просто 1`/`0, а модифицировать аттрибут. допустим - сделать на нем toString. указав name: { $toString: ‘$sub_attrs.name’ } - я получу там массив (не проверял - должно быть по логике) >выложите свой кейс на play.db-ai.co спс за ресурс https://play.db-ai.co/m/XVCUp7kkgAABTGm1
Vlad
всем привет ребят, подскажите, пожалуйста есть ли большой выигрыш по скорости от multiple-запроса через $in (в случае, если передавать массив id-шников), или стучать атомарными запросами (через js map, так как всё-равно он есть в методе) документов не более 1000
Maksim
Всем привет. Подскажите пожалуйста, настриваю репликацию вида primary - secondary - arbitr primary сервер должен ходить на 27017 на secondary и arbitr сервер?
AstraSerg
Всем привет. Подскажите пожалуйста, настриваю репликацию вида primary - secondary - arbitr primary сервер должен ходить на 27017 на secondary и arbitr сервер?
по дефолту - да, но вы можете задать любой адрес и порт. Вот описание если что: https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/
Askhat
Ребят. Проблема с mongo. Пришла ошибка MongoNetworkError read ETIMEDOUT Из-за чего такое может быть? И можно ли на ноде сделать переподключение к бд или там как то ноду перезапускать? Все время делаю руками Добавлял слушателя на on error. Не помогает
SvPupok
а с сетью проблем нет?
Askhat
Pm2 перезапускает
Обязательно тянуть pm2 в докер?
Askhat
а с сетью проблем нет?
Да вроде нет. В рабочие дни норм было. На выходных никто ничего не делал, до сервера не было обращений и тут ошибка пошла
Daniil
Добавьте на другие события
Serhii
Добрый день, ребята нужен совет, использую mongoose как ODM, есть 6 видов юзеров, и у каждого есть свои отличительные поля друг от друга, стоит ли пытатся сделать эти сущности как 1 юзер или лучше создавать для каждого вида юзера через отдельную mongoose модель?
Anonymous
Всем привет вопрос
Anonymous
был сервак с один цпу и монгой, добавил ядро монга после рестарта подхватит это второе ядро?