仅从集合中获取一个数据?

时间:2019-03-29 18:13:41

标签: python-3.x pymongo-3.x

我在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 :(得分:0)

由于您在see_listed函数中使用return,因此您只会得到一个文档。

如果将返回值更改为yield,则应该return生成器,您可以对其进行迭代。

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

但是,如果您只希望列表中的数据,则可以:

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

如果数据大小未知,也许不是最佳选择。

良率关键字:What does the "yield" keyword do?