作为使用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}} )
有效,但这不是我想要的。
答案 0 :(得分:1)
$addToSet
用于添加数组。要向现有嵌入对象添加新属性,您需要使用$set
运算符和dot notation作为:
db.collection.update({name: 'a name'}, {$set: {'links.' + toType: to_link}})