Можно ли как то оптимизировать выборку из двух коллекций?
Есть две коллекции
Первая, основная
{
_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 }
])