Получение количества элементов в mongodb, когда документы меньше $ limit (агрегация) - PullRequest
0 голосов
/ 11 июля 2020

Я не могу нигде найти, что происходит, когда мы ограничиваем количество элементов до N, а фактические документы, представленные в соответствии с фильтром, равны k, где k>N. Мой здравый смысл подсказывает, что разработчики позаботились об этом через minimum (N,actual_found), но я не смог найти решения.

У меня есть запрос в pymongo, где я хочу найти количество документов в соответствии с фильтр. У меня есть примерно такой запрос:

query = [{"$match": {"$expr": {"$and": [{"$lte": [{"$strLenCP": {"$ifNull": ["$eng_text",""]}},0]},
                                        {"$lte": [{"$strLenCP": {"$ifNull": ["$hindi_text",""]}},0]},
                                        {"$lte": [{"$strLenCP": {"$ifNull": ["$latex",""]}},0]}]}}},
         {"$limit": 1000000}]

objs =  db.questions.aggregate(query)

Проблема в том, что когда я запускал

count=0
for obj in objs:
    count+=1
print(count)
>>>
320953

, он дал мне результаты, но на это ушло много времени go на сервер для получения каждого запроса, а затем al oop.

Есть ли какой-нибудь метод, по которому я могу найти количество результатов?

Я пробовал db.questions.count_documents(query) и db.documents.count_documents({query}) и он вернул мне ошибку. Может быть, потому что это агрегат или по какой-то другой причине. Я не специалист по БД, но просто хочу увидеть лог c для получения данных. Я думаю, что могу изменить форму запроса, а затем использовать count_documents(). Может кто-нибудь подскажет, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...