MongoDB更新嵌套数组

use*_*992 1 javascript php mongodb

我在mongodb中有一个简单的结构,带有嵌套数组.如何更新搜索值?我见过使用这样的数字的例子:

invited.0.used: true
Run Code Online (Sandbox Code Playgroud)

但这不是我正在寻找的东西,因为我不知道我的列表中的这个元素在哪里,所以如何更新数组用于true,其中key为84026702?如果我在邀请如何更新密钥是43938432的100个阵列怎么办?

{
    "_id" : ObjectId("4fed972f61d69aa004000000"),
    "name" : "mezo",
    "invited" : [
            {
                    "key" : 40928710,
                    "used" : false
            },
            {
                    "key" : 84026702,
                    "used" : false
            }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Sam*_*aye 6

update({ invited.key : 84026702 }, { invited.$.used : true });
Run Code Online (Sandbox Code Playgroud)

这基本上做你想要的,应该很好地工作.查看mongodb中的位置运算符:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

或者在PHP中(因为您的问题已标记),您可以执行以下操作:

$mongo->collection->update(array('invited.key' => 84026702), array('invited.$.used' => true));
Run Code Online (Sandbox Code Playgroud)