鉴于这些文件:
db.orders.insert( {OrderId:1, OrderItems: [{OrderItemId:1, Qty:1}, {OrderItemId:2, Qty:1} ]} );
db.orders.insert( {OrderId:2, OrderItems: [{OrderItemId:1, Qty:1}, {OrderItemId:2, Qty:2} ]} );
我想获取 Qty = 1(预期结果 3)的所有 OrderItems 的数量。这就是我想写查询的方式,但它返回 2(每个 Order 文档 1):
db.orders.find({"OrderItems.Qty":1}).count();
如何查询 Qty = 1 的所有 OrderItems 的数量?
最佳答案
只是为了让阅读此线程的其他人清楚。
OP 的命令 db.orders.find({"OrderItems.Qty":1}).count();
基本上计算任何订单项的数量为 1 的文档数。
但是,OP 需要计算数量为 1 的所有 OrderItems。这里的问题是我们没有计算文档。我们正在计算文档中数组中的项目。因此需要 javascript 和某种形式的特殊 reduce 操作。
关于javascript - MongoDB:获取数组的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169658/