在列表中插入来自MongoDB的数据

时间:2018-07-14 15:30:07

标签: python mongodb mongodb-query aggregation-framework pymongo

因此,我正在使用下面的代码来获取“名称”的内容:如果“ type”:是一个注释,我想将结果放入列表中。但这是行不通的,我没有得到列表,而是得到了单独的输出,每个输出的内容均为“名称”:

我在这里做错了什么,没有将“名称”的内容放在列表中?

def note_name(bot, update):

    curs = coll.find({"type": 'note'}, {"name":True, "_id":False})
    for item in curs:
        get_name = item.get("name", None)
        my_list = []
        this_list = my_list.insert(0,get_name)
        print(my_list)

1 个答案:

答案 0 :(得分:0)

这是因为在迭代过程中,您已将循环中的空列表重新分配给“ my_list”名称。您需要在for循环外创建一个空列表“ my_list”。

请注意,默认情况下,如果找不到密钥,dict.get将返回None。因此,您不需要传递None默认值。

def note_name(bot, update):

    my_list = []
    for item in coll.find({"type": 'note'}, {"name": True, "_id": False}):
        name = item.get("name")
        my_list.append(name)
        print(my_list)

话虽如此,最好的方法是使用聚合框架。

cursor = coll.aggregate([{"$group": {"_id": None, "my_list": {"$push": "$name"}}}])
my_list = next(cursor)["my_list"]
print(my_list)