繁体   English   中英

使用 pymongo 获取密钥用法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM