Dima
Всем привет . Подскажите пожалуйста, не могу разобраться . мне для работы с mongo что нужно устанавливать
Dima
Мне нужно mongoDb compass
Алексей
Всем привет, помогите, пожалуйста, подсказкой.
Есть три коллекции: A, B, C
Каждый документ в коллекции A имеет поле "relation_field", которое содержит ссылку либо на документ из коллекции B, либо на документ из коллекции C.
При помощи агрегации мне нужно вытащить все доки А + их поля relation_field.
Это должен быть единый массив в данной агрегации для дальнейшей сортировки + пагинации.
Я получается не могу в агрегации явно указать в лукапе в свойстве from откуда тянуть документ relation_field.
Это как-то надо проверить и правильно вытянуть?
Nestjs + mongodb + mongoose
Askhat
Алексей
Спасибо большое, попробую.
Алексей
Сработало)
Ещё раз спасибо.
решение:
aggregate([
{
$lookup: {
from: 'b',
localField: 'relation_field',
foreignField: '_id',
as: 'bDocuments',
},
},
{
$lookup: {
from: 'c',
localField: 'relation_field',
foreignField: '_id',
as: 'cDocuments',
},
},
{
$project: {
_id: 1,
relation_field: 1,
documents: {
$concatArrays: ['$bDocuments', '$cDocuments'],
},
},
},
{
$unwind: '$documents',
},
{
$replaceRoot: {
newRoot: '$documents',
},
},
]);
Ян 🌙
есть структура
resources: [
{id:100},
{id: 100}
]
updateOne({}, {$pull:{resources: {id: 100}}
Удаляет все 2 объекта, как можно ограничить, чтобы удалил 1 объект?
Ян 🌙
{ multi: false } тоже не работает
Ян 🌙
как с ним бороться..
Nurlan
Ян 🌙
Но чтобы я не делал.. чистит все объекты, у которых id = 100
Ян 🌙
resources: [
{id:100},
{id: 100},
{id: 100},
{id:100}
]
После апдейта было
resources: [
{id:100},
{id: 100},
{id: 100},
]
Nurlan
Ян 🌙
Ян 🌙
Nurlan
Ну их много вышло же. Дубликаты верно?
Ян 🌙
Ян 🌙
Может есть какие-то дополнительные ограничения, как вот ограничение на вытягивание данных, будет там максимум 10 записей
Ян 🌙
Точно так и тут, чтобы трогал лишь один объект, независимо есть ещё такие или нет
Ян 🌙
Или нет такого?
Nurlan
Думаю при селекте можно присваивать нумерацию и по нему фильтровпть для удаления. Как rowNum в sql
Ян 🌙
Nurlan
Давацте днем посмотрим вместе в лс даьше)
NO WAR!
Всем привет.
Есть вот такая строка кода. В строке пытаюсь изменить свойство ordersCount у конкретного элемента массива, индекс которого уже знаю. VS Code выдает ошибку Property assignment expected, подчеркивая suppliers. Почему? Что не так?
Service.findOneAndUpdate(
{},
{ $set: {`suppliers.${supplierIndex}.ordersCount`: ordersCount + 1 }},
)
Назар
NO WAR!
Денис
Мне нужно сделать поиск записей по тегам, пока храню список тегов каждой записи в ещё одном поле в виде списка/массива
Имеет ли это смысл, я не нашёл инфу о том, что массивы строк можно индексировать, если нет, то что делать?
Сделать первый тег отдельным полем, второй тег тоже, а дальше уже фильтровать полученные результаты
Вячеслав
Добрый день, кто может подсказать почему в реплика сете перестали аплаится оплоги на реплику и как итог реплика лаг? Куда инвестигировать. В норму я привел рестартом реплик. Но хочу понять почему
yopp
yopp
Elvee
Всем привет! Подскажите как лучше хранить данные в монге? Есть сотни баз данных. Логически они разделены так: компания - база данных - документ. Мне лучше под каждую базу создавать отдельную базу или можно создать базу для компании и коллекции для баз данных которые входят в компанию?
Elvee
Количество документов в базах может достигать 100 млн. записей
Easy Rider
а база из чего состоит? не понятно
Easy Rider
судя по описанию, база это просто коллекция?
Elvee
а база из чего состоит? не понятно
Попытаюсь обьяснить.
Сейчас у меня есть папки с названием компаний. В каждой папке есть базы данных пользователей. Их может быть несколько и они все с разными полями. Но между собой они НЕ связаны. Просто как отдельные базы
Easy Rider
Easy Rider
Easy Rider
что за тип документа
Elvee
Меня интересует как их логично записать в монгу?
Монга / Мои данные
------------------------------
База данных = компания
коллекция = база данных
документ = инфа о пользоватле
Easy Rider
надо определиться с терминологией.
в монго есть:
1. Сервер. Один сервер может содержать много баз данных
2. База данных. База данных может содержать много коллекций
3. Коллекция. Коллекция может содержать много документов.
4. Документ. Документ может содержать много полей
Easy Rider
ну сделай пока просто одну БД. В любом случае ее логично делать одну
Elvee
Easy Rider
А дальше уже возможны варианты
Easy Rider
Easy Rider
Easy Rider
не корректно как-то формулируешь, многозначительно
Elvee
всё сложно. Нужно подумать как ещё проще обьяснить. Сейчас
Андрей
Не надо от обратного заходить и всё будет понятно. Не метод хранения определяет логику обработки, а наоборот.
Андрей
А у вас вопрос "как хранить" с нулём информации о том, что делать с этим.
Андрей
Если просто хранить, то в файлах оно уже хорошо лежит 😄
Elvee
У меня на компьютере есть много папок с названиями компаний в которых хранится много баз данных пользователей. Базы данных пользоватлей могут содержать в себе как 100 записей так и 100 млн.
Если мне нужно что-то найти - открывается отдельно база и выполняется поиск. Да, это пиздец. Но, как уже есть.
Я хочу добавить все эти данные в монгу для того, чтобы мне было легко искать по всем базам нужные мне данные.
Как мне логически организовать своё хранилище данных в монге?
Easy Rider
Easy Rider
а что из себя представляют эти базы?
Elvee
Easy Rider
в каком виде они хранятся, с помощью чего ты их открываешь?
Elvee
Easy Rider
конечно надо будет конвертировать во что-то, а как ты загонишь это в монго?
Elvee
Андрей
Одной коллекции достаточно.
Easy Rider
короче, сделай так:
сделай коллекцию с документом такого типа:
1. Имя компании
2. Имя человека
3. Ссылки на файлы
1 и 2 тип - текстовые, с фуллтекстовым индексом
Easy Rider
бля не точно описал, случайно Enter нажал
Easy Rider
Не, тут 2 коллекции надо, если не понятно как хранить доки, это могут быть просто файлы какие-то
Андрей
Easy Rider
то в 1-й коллекции должны быть компания и имя
во второй - файлы
Easy Rider
а если документ будет больше 16 мегабайт