我目前正在使用 mongodb ( mongoose )。我的一个示例文档是:
myuser{
_id: 7777...,
money: 1000,
ships:[{
_id: 7777...
name: "myshipname",
products:[{
product_id: 7777....,
quantity: 24
}]
}
}
我的目标是获得某个产品给定的用户ID,发货时间ID和产品ID,结果如下:{ product_id: 777..,quantity:24}
到目前为止,我找到了某个用户发货地点:
findOne(userId,ships:{ $elemMatch: {_id:shipId}})
使用userId从用户返回数组 ship 中shipId的船舶信息。但是,我找不到从该船只获得某种产品的方法
答案 0 :(得分:1)
您最想要的是使用聚合框架。类似的东西:
db.users.aggregate([
{$match: { _id : <user>}},
{$unwind: "$ships"},
{$unwind: "$ships.products"},
{$match: { "ships._id": <ship>}},
{$match: { "ships.products.product_id": <product>}}
]);
注意我现在不在使用mongo的计算机上,所以我的语法可能有些偏差。