【发布时间】:2020-03-10 10:36:17
【问题描述】:
如何使用child$elementMatch聚合?
我需要从 mongo 中返回这个“Grand Child”元素:productCode = "aaaa" Size = "41" and ware "LAX"
{
"_id" : ObjectId("5db72c636309f84479ec0c80"),
"ware" : "LAX",
"amount" : 100
}
这是完整的对象:
{
"_id": ObjectId("5db72c636309f84479ec0c7b"),
"productCode": "aaaa",
"brand": "Nike",
"image": "some.jpg",
"sizes": [
{
"_id": ObjectId("5db72c636309f84479ec0c7e"),
"size": "41",
"wares": [
{
"_id": ObjectId("5db72c636309f84479ec0c80"),
"ware": "LAX",
"amount": 100
},
{
"_id": ObjectId("5db72c636309f84479ec0c7f"),
"ware": "NYC",
"amount": 7
}
]
},
{
"_id": ObjectId("5db72c636309f84479ec0c7c"),
"size": "42",
"wares": [
{
"_id": ObjectId("5db72c636309f84479ec0c7d"),
"ware": "LAX",
"amount": 16
}
]
}
]
}
这是我已经尝试过的,但我只是返回空数组:(
let id = "aaaa";
let size = "41";
let ware = "LAX";
Product.aggregate(
[
{ $unwind: "$sizes.wares" },
{
$match: {
productCode: id,
"sizes.size": size,
"sizes.wares": { $elemMatch: { ware: ware } }
}
}
],
(err, products) => {
if (err) {
return res.status(422).send(err);
}
return res.json(products);
}
);
【问题讨论】:
标签: mongodb mongoose aggregation-framework aggregate