代码之家  ›  专栏  ›  技术社区  ›  Marcel Alexandru

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

  •  0
  • Marcel Alexandru  · 技术社区  · 8 年前

    所以,我使用下面的代码来获取“name”的内容:如果“type”:是一个注释,我想把结果放在一个列表中。但它不起作用,我得到的不是一个列表,而是每个“名称”内容的单独输出:

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

    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 回复  |  直到 8 年前
        1
  •  0
  •   Sede    8 年前

    这是因为您在迭代期间将空列表重新分配给了循环中的“我的\列表”名称。您需要在for循环之外创建空列表“my_list”。

    注意,默认情况下 dict.get 退货 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)
    
    推荐文章