Задать вопрос
ms-dred
@ms-dred
Вечно что то не то и что то не так...

Как сделать выборку из двух коллекций в MongoDB?

Можно ли как то оптимизировать выборку из двух коллекций?
Есть две коллекции
Первая, основная
{
 _id: ObjectId(""),
text: "какие то слова"
}


Вторая
{
 _id: ObjectId(""),
 uid: ObjectId(""), // ID документа первой коллекции
color: "цвет"
}


Мне нужно получить документы из первой коллекции у которой цвет совпадает из второй коллекции
Вот так делаю это сейчас
Collect.aggregate([
 { $match: { $text: {"$search": "слово"}} },
 { $lookup: { from: "colors", localField: "_id", foreignField: "uid", as: "colors" } },
 { $unwind: "$colors" },
 { $match: { colors.color: "red" } },
 { $sort: {createdAt: -1} },
 { $skip:0 },
 { $limit: 10 }
])


Приходится использовать $unwind для разделения большого количества документов, можно ли как то обойтись без него?
К примеру что то подобное реализовать
Collect.aggregate([
 { $match: { $text: {"$search": "слово"}} },
 { $lookup: { from: "colors", localField: "_id", foreignField: "uid", as: "colors" } },
 { $match: { colors.$.color: "red" } },
 { $sort: {createdAt: -1} },
 { $skip:0 },
 { $limit: 10 }
])
  • Вопрос задан
  • 234 просмотра
Подписаться 1 Средний 4 комментария
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы