获取查询返回的文档数

时间:2019-05-16 20:50:31

标签: python mongodb mongodb-query pymongo

似乎找不到回答我问题的答案。

我有一系列的MongoDB文档,其中包含有关版本和增量发行版(例如1.2、1.4.2等)的版本号。

搜索数据库的代码是:

client = MongoClient("Localhost",27017)             # Set Mongo Client to local hose

db = client.Assignment                              # Set db as the DB required
collection = db.project                             # Set the collection to the collection required

Version = float(input("Enter version number:   "))

query = {"prod.v_num": Version}

Return = collection.find(query)

for doc in Return:
    print(doc["_id"], "¦", doc["prod"]["name"], "¦", doc["prod"]["v_num"], "¦",doc["owner"])

但是,在某些情况下,搜索不会返回任何结果(即,没有带有所需版本号的文档)。

如何确定是否没有与退货匹配的文件,并允许我打印出警告消息?

我尝试过,但是没用

if len(Return) == 0:
    print("No documents match your search").

1 个答案:

答案 0 :(得分:1)

pymongo.cursor.Cursor未实现__len__方法。这就是为什么出现此错误的原因:

  

TypeError:“光标”类型的对象没有len()

但是它实现了count方法,该方法返回此查询的结果集中的文档数。您可以像这样使用它:

if Return.count() == 0:
    print("No documents match your search")

还请注意,自Python3.7版本开始不推荐使用它,而应使用count_documents查询:

Return = collection.count_documents(query)
if Return == 0:
    print("No documents match your search")