2014-10-19 126 views
1

MongoDB的新增功能。我無法通過嵌套在數組中的對象的屬性查詢。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

什麼是你想要的輸出?請澄清 – 2014-10-20 00:45:07

回答

0

正如你可能會返回從數組包含多個元素和.find()不能做到這一點,你可以嘗試如:

db.c.aggregate({ 
    $match : { 
     "sales.buyer" : "BuyerB" 
    } 
}, { 
    $unwind : "$sales" 
}, { 
    $match : { 
     "sales.buyer" : "BuyerB" 
    } 
}, { 
    $group : { 
     _id : "$_id", 
     sales : { 
      $push : "$sales" 
     } 
    } 
});