У меня есть следующий документ:
{
_id: "1",
firstName: "john",
lastName: "Doe",
cars: [
{
"_id": "2",
"carName": "BMW",
"carModel": "330",
"carColor": "silver"
},
{
"_id": "4",
"carName": "BMW",
"carModel": "330",
"carColor": "pink"
},
{
"_id": "5",
"carName": "Lexus",
"carModel": "IS300",
"carColor": "white"
},
{
"_id": "6",
"carName": "LADA",
"carModel": "2106",
"carColor": "blue"
}
]
}
Используя совокупный запрос, я возвращаю определенные объекты из массива cars
следующего документа:
db.collection.aggregate([
{
$match: {
firstName: "john"
}
},
{
$unwind: "$cars"
},
{
$match: {
"cars.carName": {
"$in": [
"Lexus",
"LADA"
]
}
}
},
{
$group: {
"_id": null,
cars: {
$push: "$cars"
}
}
}
])
Этоможно также получить индекс каждого объекта, помещаемого в массив cars
?
Например:
[
{
"_id": null,
"cars": [
{
"_id": "5",
"carColor": "white",
"carModel": "IS300",
"carName": "Lexus",
"index": 2
},
{
"_id": "6",
"carColor": "blue",
"carModel": "2106",
"carName": "LADA",
"index": 4
}
]
}
]
Запрос агрегации можно проверить здесь