0

我正在尝试为更新命令创建一个更好、更简单的标准。但我不知道如何获取所有具有我搜索的广告系列的用户:

"data" : "a name",    
"campaigns" : [     
          {     "id" : ObjectId("4ff3f07eacf4794426000154"),    "name" : "test" },
          {     "id" : ObjectId("4ff3f07eacf4794426000154"),    "name" : "fisk test2" }
    ]

我想做的是将“测试”更新为“OS 2012”。

为此,我想到了使用类似的东西:

db.users.update({"campaigns.name": "test"}, {$set : {campaigns: {'test' : 'OS 2012'}}});

该更新语句的问题在于它可能会删除用户在其数组中的任何其他活动?我只想将“test”更新为“test2”,我现在能找到的最好方法是先使用 $pull,然后使用 $addToSet。

有没有更好的办法?你能给我举个例子吗?

感谢您的建议和更好的智慧。

4

1 回答 1

1

了解$ 位置运算符。此代码有效。

db.users.update({'campaigns.name': 'test'}, 
                {$set: {'campaigns.$.name': 'blah blah'}})
于 2012-07-04T11:26:00.173 回答