Получить только одну информацию из коллекции? - PullRequest
0 голосов
/ 29 марта 2019

У меня есть некоторые данные из моей коллекции на mongoDb. Я хочу увидеть все данные из указанной коллекции, скажем, у меня есть простой код, подобный этому

from pymongo import MongoClient

url = 'my url'
client = MongoClient(url, ssl=True, retryWrites=True)

class DB(object):
    def __init__(self):
        self.db = client.mydb
        self.col = self.db.mycol

    def see_listed(self):
        for i in self.col.find():
             return i

db = DB()
print(db.see_listed())

Это вернуло только одну информацию из моей коллекции

но если я изменил код с see_listed на

for i in self.col.find():
    print(i)

Это возвращает все данные из моей коллекции, где моя ошибка, я не знаю .. Я просто прочитал некоторые документы при такой попытке.

Я так благодарен за любую помощь, которую я ценю

1 Ответ

0 голосов
/ 30 марта 2019

Вы получаете только один документ, так как вы используете return в своей функции see_listed.

Если вы измените возвращаемое значение на yield, вместо этого должно получиться return генератор, который вы можете перебрать.

def see_listed(self):
    for i in self.col.find():
         yield i

Но если вам нужны только данные в списке, вы можете сделать:

def see_listed(self):
    return list(self.col.find())

Возможно, не лучший выбор, если размер данных неизвестен.

ключевое слово yield: Что делает ключевое слово yield?

...