获取 MongoDB 中特定字段平均值的最快方法
假设我有一个如下所示的数据集:
{ "_id" : ObjectId("4dd51c0a3f42cc01ab0e6506"), "views" : 1000, "status" : 1 }
{ "_id" : ObjectId("4dd51c0e3f42cc01ab0e6507"), "views" : 2000, "status" : 1 }
{ "_id" : ObjectId("4dd51c113f42cc01ab0e6508"), "views" : 3000, "status" : 1 }
{ "_id" : ObjectId("4dd51c113f42cc01ab0e6508"), "views" : 4000, "status" : 0 }
获得状态为 1 的所有文档的平均查看次数的最快方法(性能方面)是什么?像这样的基本功能是否需要 Map/Reduce,还是有其他方法?
Let's say I have a dataset like the following:
{ "_id" : ObjectId("4dd51c0a3f42cc01ab0e6506"), "views" : 1000, "status" : 1 }
{ "_id" : ObjectId("4dd51c0e3f42cc01ab0e6507"), "views" : 2000, "status" : 1 }
{ "_id" : ObjectId("4dd51c113f42cc01ab0e6508"), "views" : 3000, "status" : 1 }
{ "_id" : ObjectId("4dd51c113f42cc01ab0e6508"), "views" : 4000, "status" : 0 }
What is the fastest way (performance-wise) to get the average number of views for all documents with a status of 1? Is Map/Reduce required for something basic like this, or is there another way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用组:http://www.mongodb.org/display/DOCS/Aggregation
需要一个用于文件的计数器和另一个用于视图总和的计数器。在最终确定中,您只需对这两个数字进行除法即可。
Use group: http://www.mongodb.org/display/DOCS/Aggregation
you need a counter for the documents and another for the sum of views. In finalize you just do a division on these two numbers.
在任何情况下获得平均值的更快方法 - 预先计算它(可能您可以在后台执行此操作)并创建额外的字段/集合来存储它。
Faster way to get average in any case - precalculate it(probably you can do this in background) and create extra field/collection to store it.