Получить размер результата агрегатного метода MongoDB - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть этот сводный запрос:

cr = db.last_response.aggregate([

{"$unwind": '$blocks'},
{"$match": {"sender_id": "1234", "page_id": "563921", "blocks.tag": "pay1"}},
{"$project": {"block": "$blocks.block"}}
])

Теперь я хочу получить номер возвращаемого элемента (пустой курсор или нет).

Вот как я это сделал:Я определил пустой массив:

x = []

Я перебрал курсор и добавил массив x:

for i in cr :
   x.append(i['block'])
print("length of the result of aggregation cursor :",len(x))

Мой вопрос: есть ли более быстрый способ получить числорезультат совокупного запроса, как метод count () запроса find ()?

Спасибо

1 Ответ

0 голосов
/ 21 декабря 2018

Более быстрый способ состоит в том, что отклонение операций переноса всех данных из mongod в ваше приложение.Для этого вы можете добавить заключительный групповой этап для подсчета документов

{"$group": {"_id": None, "count": {"$sum": 1}}},

Это означает, что mongod объединяет и получает в результате подсчет документов.Невозможно получить счетчик результатов без выполнения конвейера агрегации.

...