Python PyMongo计算数组项的出现次数

时间:2017-07-04 17:55:12

标签: python arrays mongodb pymongo

我需要计算的值是一个值数组,而不是$ myField是一个项目的关键,它是我需要计算的数组元素,所以所有文档中的玉米,小麦,大麦的数量。

__init__.py

这是单个项目的代码:

"myField": [
  "corn",
  "wheat"
],

1 个答案:

答案 0 :(得分:0)

现在是$unwind的时间,它将一组值转换为一系列文档,每个文档都有一个值,其中数组是:

c = MongoClient().test.collection
c.delete_many({})
c.insert_many([
    {"myField": ["corn", "wheat"]},
    {"myField": ["corn", "barley"]},
    {"myField": ["hops"]},
])

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

输出:

barley: 1
wheat: 1
hops: 1
corn: 2