MongoDB全新。我很难通过嵌套在数组中的对象的属性进行查询。
我有以下数据结构:
{
"sales":[
{
"item":1234,
"seller":"SellerA",
"buyer":"BuyerA"
},
{
"item":5678,
"seller":"SellerB",
"buyer":"SellerB"
},
{
"item":1122,
"seller":"SellerA",
"buyer":"BuyerA"
},
{
"item":1199,
"seller":"SellerB",
"buyer":"SellerB"
}
]
}
我有其他属性与"销售"数组,但我已经简化了示例。
我试图提取每个买方价值为" BuyerB的销售单据。"
我尝试过以下方法:
db.data.find({"sales": {$elemMatch: {buyer: "BuyerB"}}})
db.data.find({"sales.buyer": "BuyerB"}})
这些查询会运行,但会返回每一行数据,而不仅仅是那些买方价值为" BuyerB"
的数据。我知道必须有一个简单的答案,但我的搜索结果是我已经尝试过但没有成功。
答案 0 :(得分:0)
由于您可能会从数组中返回多个元素而 .find()无法执行此操作,因此您可以尝试聚合,例如:
db.c.aggregate({
$match : {
"sales.buyer" : "BuyerB"
}
}, {
$unwind : "$sales"
}, {
$match : {
"sales.buyer" : "BuyerB"
}
}, {
$group : {
_id : "$_id",
sales : {
$push : "$sales"
}
}
});