Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 查找和更新数组中的字段_Mongodb - Fatal编程技术网

Mongodb 查找和更新数组中的字段

Mongodb 查找和更新数组中的字段,mongodb,Mongodb,我试图为update命令创建更好、更简单的标准。但我不知道如何才能获取所有有我搜索的任何活动的用户: "data" : "a name", "campaigns" : [ { "id" : ObjectId("4ff3f07eacf4794426000154"), "name" : "test" }, { "id" : ObjectId("4ff3f07eacf4794426000154"), "name" :

我试图为update命令创建更好、更简单的标准。但我不知道如何才能获取所有有我搜索的任何活动的用户:

"data" : "a name",    
"campaigns" : [     
          {     "id" : ObjectId("4ff3f07eacf4794426000154"),    "name" : "test" },
          {     "id" : ObjectId("4ff3f07eacf4794426000154"),    "name" : "fisk test2" }
    ]
我想做的是将“test”更新为“OS2012”

为此,我考虑使用类似的方法:

db.users.update({"campaigns.name": "test"}, {$set : {campaigns: {'test' : 'OS 2012'}}});
update语句的问题在于,它可能会删除用户阵列中的任何其他活动?我只想将“test”更新为“test2”,现在我能找到的最好方法是先使用$pull,然后使用$addToSet

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

谢谢你的建议和更好的智慧。

了解。这个代码有效

db.users.update({'campaigns.name': 'test'}, 
                {$set: {'campaigns.$.name': 'blah blah'}})

是否有收集活动?我认为它是
users
。你说的
db.users.find({“活动.名称”:“测试”})是什么意思?
不起作用?对我有用。现在对我也有用,我想我一定是拼错了什么。实际上,campaign.name不是“test”,而是一个带有大写字母、空格等的字符串。:)好吧,那就把它从帖子上删除,不要让其他读者感到困惑:)我已经做了,我现在也接受了你的答案。再次感谢!该死,你跑得太快了。尽管如此,我还是马上解决了这个问题,这就是为什么我删除了我的评论。我这样做解决了这个问题:
{$set:{'campaiments':{id:ObjectId(“123…”),name:'blah blah'}}}}})