MongoDB:匹配嵌套数组元素的计数

MongoDB:匹配嵌套数组元素的计数,mongodb,Mongodb,我在MongoDB中有一个简单的父子对象存储为文档。一些简单化的东西,比如订单/订单项。(订单包含OrderItem的数组) 我想做的是查询满足一组条件的订单项计数 示例:在订单“999”中,找出数量为3的订单项目的数量 db.collection.find( {OrderId:999, "OrderItems.QuantityOrdered":3} ).count(); 此查询的工作方式是返回“1”,因为如果它与数组中的至少一个OrderItem匹配,它将返回匹配的订单数 如何查询匹配的“O

我在MongoDB中有一个简单的父子对象存储为文档。一些简单化的东西,比如订单/订单项。(订单包含OrderItem的数组)

我想做的是查询满足一组条件的订单项计数

示例:在订单“999”中,找出数量为3的订单项目的数量

db.collection.find( {OrderId:999, "OrderItems.QuantityOrdered":3} ).count();
此查询的工作方式是返回“1”,因为如果它与数组中的至少一个OrderItem匹配,它将返回匹配的订单数


如何查询匹配的“OrderItems”数量?:

没有直接的方法可以通过嵌入文档返回此类计数。使用这种特殊的计数方式,您最好返回文档并从应用程序中进行计数


如果要对大量订单执行此类计数,可以使用map reduce,它将结果输出到新集合。

似乎适合我。除非我的结构不正确。>db.posts.find(){“_id”:ObjectId(“4C2E2C7BD3925311B1EDAE7”),“orderid”:1,“orderitems”:{“quantityordered”:3}}{“_id”:ObjectId(“4c2e2c8ad39925311b1edae8”),“orderid”:1,“orderitems”:{“quantityordered”:2}{“{”id:“ObjectId”(“4C2EC93D39925311B1EDAE9”),“orderid”:1,“orderitems”:{“quantityordered”:3}>我同意。但是,如果您经常需要此类数据,最高级的方法是将计数存储在文档本身中,并在应用程序端相应地进行更新。