Мне нужна помощь с запросом агрегирования поиска MongoDB.
Пытаюсь объединить две коллекции, а именно кафе и штамп. Во время поиска я хотел бы сопоставить марки для данного кафе, а затем дополнительно отсортировать и ограничить результаты до 10.
Соответствующие поля идентификатора: _id для коллекции кафе и cafeId in для коллекции штампов.
Вот что я придумал, однако, похоже, возникает проблема при попытке сопоставления по идентификаторам между данными коллекциями. Я считаю, что это может быть связано с тем, что Mongo не рассматривает их как ObjectID, но я не уверен.
db.cafe.aggregate([
{
$lookup: {
from: "stamp",
as: "stamps",
let: {
id: "$_id",
name: "$name"
},
pipeline: [
{ $project: { id:1, cafeId: { $toObjectId: "$$id"}, name:1 } },
{ $match: { expr: { $eq: ["$$cafeId", "$cafeId"] } } },
{ $sort: { stampDate: -1 } },
{ $limit: 10 }
]
}
}
]);