我正在try 获取数据库中条目最多的人的列表.

print db.points.aggregate(
   [
      {
         "$group":
                    {
                       "_id": "$created.user", 
                       "count":{"$sum":1}
                    }
      },
      {
         "$sort":
                   {"count":-1}
      }
   ]
)

条目如下所示:

{
   u'id': u'342902', 
   u'_id': ObjectId('555af76a029d3b1b0ff9a4be'), 
   u'type': u'node', 
   u'pos': [48.9979746, 8.3719741], 
   u'created': {
                  u'changeset': u'7105928', 
                  u'version': u'4', 
                  u'uid': u'163673', 
                  u'timestamp': u'2011-01-27T18:05:54Z', 
                  u'user': u'Free_Jan'
               }
}

我知道created.user是存在的,而且在其他方面是可以访问的.

我得到的结果仍然是:

<pymongo.command_cursor.CommandCursor object at 0x02ADD6B0>

我不应该得到一个排序的列表吗?

推荐答案

聚合查询的结果是一个游标,就像常规的find查询一样.在pymongo的情况下,CommandCursor是可移植的,因此您可以执行以下任一操作:

cursor = db.points.aggregate(...)

# Option 1
print(list(cursor))

# Option 2
for document in cursor:
    print(document)

Note:作为arun noticed,在这两种情况下,即在用游标创建列表或在for循环中迭代后,将无法在游标上重新迭代.在这种情况下,如果你想在将来使用它,第一个选项会变得更好,因为你可以随心所欲地使用获得的列表,因为它已经在内存中了

Mongodb相关问答推荐

MongoDB中的字符串聚合

如何根据两个 struct 创建一个Mongo文档?

MongoDB 对特定搜索查询的响应时间较长

避免在 MongoDB 聚合框架中使用 ISODate() 以便管道可以是纯 JSON

MongoDB 列表 - 获取每第 N 个元素

使用 Spring Boot >= 2.0.1.RELEASE 将 ZonedDateTime 保存到 MongoDB 时出现 CodecConfigurationException

Mongo 重启错误 -- /var/run/mongodb/mongod.pid 存在

MongoDB 的 BinData(0, "e8MEnzZoFyMmD7WSHdNrFJyEk8M=") 中的0是什么意思?

Java MongoDB/BSON 类混淆

在mongodb中实现分页

mongo - 如何查询嵌套的 json

Mongoose 连接认证失败

Mongoose Select 要从 findOneAndUpdate 返回的字段

120 个 mongodb 集合与单个集合 - 哪个更有效?

MongoTemplate upsert - 从 pojo 进行更新的简单方法(哪个用户已编辑)?

用 MongoDB 中的属性表示多对多关系的最佳模型

MongoDB:删除唯一约束

MongoDb - 利用多 CPU 服务器进行写入繁重的应用程序

在 NodeJs 中处理 Mongodb 全局连接的最佳方法是什么

Mongodb Compass 无法在 Ubuntu 18.10 中打开