javascript - MongoDB:获取数组的计数

标签 javascript mongodb

鉴于这些文件:

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/

相关文章:

javascript - electron 的 globalShortcut 将禁用原始按键

javascript - FitText.js 的非 jQuery 替代品?

node.js - Node js (Express) 在 mongodb 操作中卡住

java - MongoDB 和 Java : Query doesn't return results

mongodb - 如何处理Elasticsearch中包含 '_'的字段?

javascript - 如何使用 AngularJS 推送到 MongoDB 数组?

javascript - 在不更改版本的情况下从 IndexedDB 阻塞事件中恢复

javascript - 重新加载当前页面时,Django 不会刷新我的请求对象

python - 如何用pymongo连接远程mongodb

javascript - 我的指令没有触发