我想在文档中插入一个新元素。我做了以下事情:
l=[78.0, 97.5, 97.5]
new_one = {"my_list" : l}
insert_id = dbh.users.update({"p_id":'100'}, {"$push":new_one}, upsert=False, safe=True)
然后,当我检索此列表时,我做了:
docs = dbh.users.find_one({"p_id": '100'})
print docs.get('my_list')
但是,我有一个嵌套列表,如下所示
>> [[78.0, 97.5, 97.5]]
我如何获得列表,而不是嵌套?
答案 0 :(得分:1)
而不是推动,你只想设置。
通过推送,您要将列表添加到列表中,这就是它嵌套的原因。
只需将$push
替换为$set
。
> l=[78.0, 97.5, 97.5]
[ 78, 97.5, 97.5 ]
> new_one = {"my_list" : l}
> insert_id = db.users.update({"p_id":'100'}, {"$set":new_one}, upsert=true, safe=true)
> db.users.find({})
{ "_id" : ObjectId("52c3a5682420d55400369a59"), "my_list" : [ 78, 97.5, 97.5 ], "p_id" : "100" }