Евгений
😳
добрый вечер, не совсем понимаю как получить все из одной таблицы и потом из другой, аналог union из sql, и с условием на userId в одном документе и просто id в другом.
Yaroslav
https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/
Dmitry
What is the problem?
Dmitry
Write specifically what you can't do because I don't download files
Dmitry
db("Name database").collection("Name collection").find({})
yopp
Да, можно
Abdurazzoq
Здравствуйте!
Maxim
Всем привет. Подскажите пожалуйста, делаю агрегацию , после первого этапа надо подсчитать количество документов и вывести результат после всех этапов агрегации. это возможно сделать? Или подсчёт придётся делать отдельным запросом?
Maxim
$count
после $count не выведется тогда общий результат агрегации после всех этапов
Dmitry
Так у тебя на выходе по идеи массив документов должен вернуться
Dmitry
Получи его длину и всё
Alexandrr
Получи его длину и всё
неее, надо субд этим нагружать))
Maxim
Maxim
неее, надо субд этим нагружать))
достаточно прочитать , что я имею ввиду :)
Maxim
Так у тебя на выходе по идеи массив документов должен вернуться
если я сделаю $count после первых этапов агрегации, то на остальные этапы у меня будут передаваться уже не данные , а количество документов
Dmitry
Если не хочешь делать доп запрос, который желательно кэшировать
Maxim
спасибо за ответ
­­­Ilya.kt
всем привет, у меня есть вот такой вот array: members: [["ID", "NAME"]] как удалить array из members с определенным "ID"?
­­­Ilya.kt
удалить вот это по айди
Nick
удалить вот это по айди
ну и наркомания) как так получилось, что вместо номрального объекта с полями был выбран массив?
­­­Ilya.kt
я ничего не могу сделать?
Nick
ща подумаем
Nick
удалить вот это по айди
а вы выборки както делаете по таким идшникам?
­­­Ilya.kt
я в общем решил поменять этот массив
­­­Ilya.kt
на объект
Nick
я чет даже не могу нормально выборку собрать
­­­Ilya.kt
теперь он выглядит так, как удалить?
­­­Ilya.kt
делаю так но не получается
Maxim
$pull
Maxim
{ $pull: { members: { id: this.ctx.from.id } } }?
Nick
делаю так но не получается
db.getCollection('arr_in_arr').update( {"members.id": 123}, { $pull: {members: {id: 123}} } )
­­­Ilya.kt
спасибо вам всем большое
­­­Ilya.kt
Вячеслав
Всем привет. Использую mongoose в телеграмм боте. Вопрос по подключениям. Соединение происходит в мидле и отрабатывает каждый раз. Думаю, что не хорошо. Как то можно проверить если ли уже соединение и если оно есть - не выполнять его повторно? Вот код await mongoose.connect( `mongodb://${process.env.MONGODB_DATABASE_URL}/${process.env.MONGODB_DATABASE_NAME}` )
Dmitry
Давно писал, мб что-то и поменялось, но не факт
Вячеслав
if (mongoose.connections[0].readyState) { return mongoose.connections[0] }
if (!mongoose.connection.readyState) { await mongoose.connect( `mongodb://${process.env.MONGODB_DATABASE_URL}/${process.env.MONGODB_DATABASE_NAME}` ) } такое вот соорудил
Dmitry
И такой вариант вроде не прокатит
Игорь
Кто знает, когда стоит использовать в redis hashes, а когда sets?
Alexandrr
Игорь
Нету группы по редису 😒
Alexandrr
Нету группы по редису 😒
🌳 Базы Данных @dbbooks @database_group @db_in_it @sql_wiki @databases_secrets 📌 Подписаться на канал
spectrum
Всем привет. Только начал изучать mongodb/mongoose и пытаюсь разобраться возможно ли реализовать такую задачу: Есть документ, в котором есть вложенные объекты, внутри которых есть массив с тегами. Вложенные объекты планируется реализовать через ссылку. Можно ли сделать запрос в mongoose который бы возвращал все головные объекты у которых есть вложенные объекты с определенными тегами? Прочитал документацию и по mongodb и по mongoose но подобных примеров найти не смог. Заранее благодарю за помощь.
spectrum
Покажи один документ для образца
Это основной документ: { _id: id_document1, children: [ id_document2 ] } Это вложенный документ: { _id: id_document2, tag: [ tag1, tag2, tag3, ... ] } Мне надо получить все основные документы, в которых есть вложенные документы с определенными тегами (наприме с tag2 и tag7). Как это можно сделать?
Yaroslav
Но проще от обратного, от второго документа
Yaroslav
Ищешь документы у которого есть такие то тжги и лукапишь его с первым документом
Dmitry
Это основной документ: { _id: id_document1, children: [ id_document2 ] } Это вложенный документ: { _id: id_document2, tag: [ tag1, tag2, tag3, ... ] } Мне надо получить все основные документы, в которых есть вложенные документы с определенными тегами (наприме с tag2 и tag7). Как это можно сделать?
Если у тебя структура как на скриншоте, то { "$and":[ { "m.tags":"tag7" }, { "m.tags":"tag2" } ] } Если у тебя там id лежат в массиве, а документ в другой коллекции, то lookup
spectrum
Спасибо большое ребята за помощь. Я думал про lookup, когда читал доку, но мне казалось, что он работает только для развертывания вложенных документов и через него не получится искать головной документ. Теперь стала более понятна логика.
Dmitry
spectrum
Ищешь документы у которого есть такие то тжги и лукапишь его с первым документом
Я правильно понимаю, что здесь необходимо будет сделать два запроса: сначала ищем всю выборку по докам2, а потом применяем id из этой выборки в качестве фильтра для поиска по докам1?
Dmitry
Mongoose нужен для написания схем и валидации данных при добавление записи в БД
spectrum
1 запроса достаточно, через аггрегацию
Буду читать доку, вектор понятен. Спасибо!
Yaroslav
А кто-нибудь заюзал prisma?
Yaroslav
А то меня подготовки от кривого тайпинга в монгусе
nefertisu
ребят, делаю агрегацию через mongoose и как только добавляю в поле $project объект (опцильнальный в модели) то агрегация перестаёт находить что либо, как зафиксить такое?
nefertisu
$project: { name: 1, fileObj: 1, },
nefertisu
fileObj это опциональный объект который может быть может не быть
Nick
важно как вы испольузете, кусок кода покажите
Dmitry
Он вроде возвращает в качестве результата object в котором есть _id
Александр
Добрый день. Подскажите пожалуйста, как в монге сделать... пайп $in работает, как include - 1 вариант. Как сделать условие для второго, чтобы частичное совпадение слова было -2 вариант?
Dmitry
У нас на последнем проекте использовался массив объектов в котором был указан день недели и время работы, а также был массив с исключениями и на фронте всё крутилось возле него.
Александр
не понятно при чем тут "частичное совпадение" если ищется тупо наличие элемента в массиве?
элемент из IDLING_LIST может являться частью ProgramName. Мне нужно, чем агрегацию найти value1. я уже сделал через $function: , но это сильно дольше
Nick
элемент из IDLING_LIST может являться частью ProgramName. Мне нужно, чем агрегацию найти value1. я уже сделал через $function: , но это сильно дольше
тут регулярки нужны. Можно генерить отдельно условие с простой регуляркой под каждое вхождение и через $or их собирать. Либо строить мегарегулярку.