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

2024-09-28 16:22:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这是单个项目的代码:

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

Tags: 项目代码文档id元素for数量count
1条回答
网友
1楼 · 发布于 2024-09-28 16:22:06

现在到了$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

相关问题 更多 >