[英]Get key usage using pymongo
有没有办法获取键列表并使用pymongo
计算它们的值? 我已经使用Counter
object 并循环遍历整个集合来解决它,但是,此代码对于广泛的 collections 来说效率低下。有没有办法在数据库级别解决它?
import pymongo
from collections import Counter
client = pymongo.MongoClient("XXX")
database = client["jiripesik"]
collection = database["database"]
result = collection.find({})
key_list = []
for item in result:
for key in item.keys():
key_list.append(key)
counter = Counter(key_list)
print(counter)
我怀疑这会不会非常高效,但这里有一种方法可以计算集合中所有顶级字段的数量。
db.collection.aggregate([
{
"$project": {
"keys": {
"$map": {
"input": { "$objectToArray": "$$ROOT" },
"in": "$$this.k"
}
}
}
},
{ "$unwind": "$keys" },
{
"$group": {
"_id": "$keys",
"count": { "$count": {} }
}
},
{
"$group": {
"_id": null,
"histo": {
"$mergeObjects": {
"$arrayToObject": [
[ { "k": "$_id", "v": "$count" } ]
]
}
}
}
},
{ "$replaceWith": "$histo" }
])
在mongoplayground.net上试用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.