Pymongo一次性获得文件数量和结果?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (57)

有没有办法从find(光标)的结果中获取计数?我想要最小化数据库访问。我可以获取查询结果并一次性计算吗?

res_docs = db.sensorDataCol.find({'sensorId': 123})
print(res_docs.count()) ?
print(len(res_docs)) ?
print(len(res_docs.items())) ?
.....

我知道我能做到:

res_count = db.sensorDataCol.countDocuments({'sensorId': 123})

或者:

res_docs = db.sensorDataCol.find({'sensorId': 123})
doc_count = 0
for doc in res_docs:
    doc_count += 1

但是有更简洁的方式吗?

提问于
用户回答回答于

这并不困难:

cursor = db.sensorDataCol.find({'sensorId': 123})
res_docs = list(cursor)  # list of dicts
count1 = len(res_docs)  # simpliest way
count2 = cursor.count()  # alternative way, count1 == count2

这就是如何获得最小数据库访问的文档列表和文档计数。

扫码关注云+社区

领取腾讯云代金券