MongoDB计算不同的速度

时间:2017-07-04 14:56:30

标签: python mongodb pymongo

我在PyMongo中使用以下代码:

db.collection.group(["myField"], {}, {"count":0},"function(o, p){p.count++}" )

哪个正确返回我需要的数字,但搜索需要30秒才能完成。索引速度会提高吗?我发现很难知道字段是应该还是不应该被编入索引,因为我读了一篇文章,说不要索引太多,否则一切都会变慢,所以我没有索引任何内容。

2 个答案:

答案 0 :(得分:0)

计算现有密钥

请参阅:https://docs.mongodb.com/manual/reference/method/db.collection.count/

db.collection.count({"myField": {"$exists": True} })

按键分组计数

请参阅:https://docs.mongodb.com/manual/reference/operator/aggregation/sum/#grp._S_sum

db.collection.aggregate([{"$group": {"_id": "myField", "count": {"$sum":1} }])

答案 1 :(得分:0)

"组"很慢,因为它必须为它遇到的每个文档执行Javascript函数。 For this reason, the MongoDB manual says "group" is deprecated."聚合"已取代" group"作为一种快速的现代方式来完成这样的任务:

for result in c.aggregate([{
    "$group": {
        "_id": "$myField",
        "count": {"$sum": 1}
    }
}]):
    print("%s: %d" % (result["_id"], result["count"]))

See the MongoDB manual section about aggregation