【发布时间】:2019-07-22 11:04:55
【问题描述】:
我有以下文件:
{
_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
}
]
}
]
可以测试聚合查询here
【问题讨论】:
标签: arrays database mongodb mongoose mongodb-query