$ addToSet使用pymongo嵌套嵌套对象

时间:2012-09-30 04:52:35

标签: python mongodb pymongo database

作为使用pymongo的python中的for-in循环的一部分,我想在linktype字段中添加一些嵌套文档/对象,该字段位于links字段内: 在添加第一个此类条目之前,links字段或linktype字段都不存在。

执行此操作的命令是什么?

以下是添加链接之前的项目:

item = {
    "_id" : ObjectId("5067c26b9d595266e25e825a"),
    "name": "a Name"
}

添加一个typeA类型的链接后:

toType = "typeA"
to_link = {"_id" : ObjectId("5067c26b9d595266e25e825b"), "property":"value"}

{
    "_id" : ObjectId("5067c26b9d595266e25e825a"),
    "name": "a Name",
    "links" : {
        "typeA":{
            {"_id" : ObjectId("5067c26b9d595266e25e825b"), "property":"value"}       
        }
    }
}

我试过了:

db.collection.update({"name":"a Name"},{{"links":{"$addToSet":{toType:to_link}}})

哪个不起作用。 如果我只是使用:

db.collection.update({"name":"a Name"},{ {"$addToSet":{toType:to_link}} )

有效,但这不是我想要的。

1 个答案:

答案 0 :(得分:1)

$addToSet用于添加数组。要向现有嵌入对象添加新属性,您需要使用$set运算符和dot notation作为:

db.collection.update({name: 'a name'}, {$set: {'links.' + toType: to_link}})