【问题标题】:MongoDB: Count of matching nested array elementsMongoDB:匹配嵌套数组元素的计数
【发布时间】:2011-03-11 05:30:27
【问题描述】:

我有一个简单的父子对象作为文档存储在 MongoDB 中。像 Order/OrderItems 这样简单的东西。 (Order有一个OrderItem数组)

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

示例:在“999”订单中找出数量为 3 的订单商品数量。

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

此查询的工作方式是返回“1”,因为如果它匹配数组中的至少一个 OrderItem,它将返回匹配的订单数。

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

【问题讨论】:

  • 似乎对我有用。除非我的结构不正确。 > db.posts.find() { "_id" : ObjectId("4c2e2c7bd39925311b1edae7"), "orderid" : 1, "orderitems" : { "quantityordered" : 3 } } { "_id" : ObjectId("4c2e2c8ad39925311b1edae8"), “orderid”:1,“orderitems”:{“quantityordered”:2 } } {“_id”:ObjectId(“4c2e2c93d39925311b1edae9”),“orderid”:1,“orderitems”:{“quantityordered”:3 } } >

标签: mongodb


【解决方案1】:

没有直接的方法可以通过嵌入文档返回这种计数。使用这种临时计数,最好的办法是返回文档并从应用程序中进行计数。

如果你想对大量订单进行这种计数,你可以使用 map-reduce,它会将结果输出到一个新的集合中。

【讨论】:

  • 我同意。但是,如果您经常需要此类数据,最推荐的方法是将计数存储在文档本身中,并在应用程序端进行相应的更新。
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 2021-05-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多