Pymongo: при возврате данных через def возвращает только одну строку

#pymongo

#pymongo

Вопрос:

 def av():
for row in info.aggregate([{"$project": {"firstname": 1}}]):
    list=[]
    list.append(row)
    list=str(list)
    return list
print(av())
  

здесь, если вместо записи ‘return list’ я напишу ‘print (list)’, это даст мне все необходимые данные
, но если я попытаюсь их вернуть. на выходе выдается только первая строка данных (коллекция)
Поскольку я хочу вызвать функцию позже в программе, чтобы задать условия if для проверки, присутствует ли данный вывод в данных или нет
, я должен возвращать, а не печатать.
Пожалуйста, скажите мне, чего мне не хватает
, или есть лучший способ сделать то же самое

Ответ №1:

Проблема в том, что return завершает цикл for на первой итерации, а print — нет. Напишите возвращаемый список на том же уровне, что и цикл for. кроме того, вы каждый раз очищаете список, определяете его перед циклом.

  def av():
    list=[]
    for row in info.aggregate([{"$project": {"firstname": 1}}]):
        list.append(row)
    list=str(list)
    return list
 print(av())