Получить количество документов, возвращаемых по запросу - PullRequest
2 голосов
/ 16 мая 2019

Не могу найти ответ, который отвечает на мой вопрос.

У меня есть серия документов 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 Ответ

1 голос
/ 17 мая 2019

pymongo.cursor.Cursor не реализует метод __len__. Вот почему вы получаете эту ошибку:

TypeError: объект типа 'Cursor' не имеет 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")
...