假设我有一个如下所示的数据集:
{ "_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,还是有其他方法?
使用组:http://www.mongodb.org/display/DOCS/Aggregation http://www.mongodb.org/display/DOCS/Aggregation
您需要一个用于文档的计数器和另一个用于视图总和的计数器。在最终确定中,您只需对这两个数字进行除法即可。
db.test.group(
{ cond: {"status": 1}
, initial: {count: 0, total:0}
, reduce: function(doc, out){ out.count++; out.total += doc.views }
, finalize: function(out){ out.avg = out.total / out.count }
} );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)