因此,我正在使用下面的代码来获取“名称”的内容:如果“ 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)
答案 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)