2010-07-02 94 views
3

我有一個簡單的父子對象作爲文檔存儲在MongoDB中。像Order/OrderItems這樣簡單的東西。 (訂單有一個OrderItem數組)MongoDB:匹配嵌套數組元素的數量

我想要做的是查詢訂單項的計數,他們符合一組標準。

例子:爲了「999」找到了許多訂單項目怎麼過的3

db.collection.find({OrderId:999, "OrderItems.QuantityOrdered":3}).count(); 

量此查詢的工作原理是,它返回「1」,因爲如果至少一個OrderItem的內部匹配的方式該數組將返回匹配Orders的數量。

我如何可以查詢多少「的OrderItems」匹配?:

+0

似乎爲我工作。除非我的結構不正確。 (「_id」:ObjectId(「4c2e2c7bd39925311b1edae7」),「orderid」:1,「orderitems」:{「quantityordered」:3}} {「_id」:ObjectId(「 「orderid」:1,「orderitems」:{「quantityordered」:2}} {「_id」:ObjectId(「4c2e2c93d39925311b1edae9」),「orderid」:1,「orderitems」:{「quantityordered」 3}} > – luckytaxi 2010-07-02 18:17:23

回答

3

有回報的這種計數與嵌入式文件沒有直接的方法。通過這種臨時計數,您最好的選擇是退回文檔並從應用程序中進行計數。

如果您想對大量訂單執行此類計數,您可以使用map-reduce,它會將結果輸出到新的集合中。

+0

我同意。但是,如果您經常需要這類數據,最受歡迎的方法是將計數存儲在文檔本身中,並在應用程序一側對其進行相應更新。 – mikezter 2011-08-08 16:42:51