Мне нужно проверить, возвращает ли оператор find
непустой запрос.
Что я делал, было следующее:
query = collection.find({"string": field})
if not query: #do something
Тогда я понял, что мой оператор if
никогда не выполнялся, потому что find
возвращает курсор, либо запрос пуст, либо нет.
Поэтому я проверил документацию, и я нахожу два метода, которые могут мне помочь:
-
count(with_limit_and_skip=False)
, который (из описания):Возвращает количество документов в результатах, заданных для этого запроса.
Кажется, хороший способ проверить, но это означает, что мне нужно подсчитать все результаты в курсоре, чтобы узнать, равна нулю или нет, не так ли? Немного дороже?
-
retrieved
, который (из описания):Число документов, полученных до сих пор.
Я тестировал его на пустой набор запросов, и он возвращает ноль, но он не ясно, что он делает, и я не знаю, правильно ли это для меня.
Итак, что лучший способ (лучшая практика) проверить, возвращает ли запрос find()
пустой набор или нет? Для этого подходит один из способов, описанных выше? А как насчет производительности? Есть ли другие способы сделать это?
Просто чтобы быть ясным: мне нужно знать, является ли запрос пустым, и я бы хотел найти лучший способ с помощью курсора относительно производительности и быть pythonic.