1

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

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

这是添加链接之前的一个项目:

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}} )

这行得通,但这不是我想要的。

4

1 回答 1

1

$addToSet用于添加到数组。要将新属性添加到现有嵌入对象,您需要使用$set运算符和点表示法

db.collection.update({name: 'a name'}, {$set: {'links.' + toType: to_link}})
于 2012-09-30T13:35:14.287 回答