我正在尝试为更新命令创建更好,更简单的条件。但我无法弄清楚如何获取所有我搜索过的广告系列的用户:
"data" : "a name",
"campaigns" : [
{ "id" : ObjectId("4ff3f07eacf4794426000154"), "name" : "test" },
{ "id" : ObjectId("4ff3f07eacf4794426000154"), "name" : "fisk test2" }
]
我想要做的是将“test”更新为“OS 2012”。
为此,我想到了使用类似的东西:
db.users.update({"campaigns.name": "test"}, {$set : {campaigns: {'test' : 'OS 2012'}}});
该更新声明的问题是它可能会删除用户在其阵列中的任何其他广告系列?我只想将“test”更新为“test2”,我现在能找到的最好的方法是首先使用$ pull然后$ addToSet。
有更好的方法吗?你能告诉我一个例子吗?
感谢您的建议和更好的智慧。
答案 0 :(得分:1)
了解the $ positional operator。这段代码有效。
db.users.update({'campaigns.name': 'test'},
{$set: {'campaigns.$.name': 'blah blah'}})