我在mongodb中有一个简单的结构,带有嵌套数组。如何更新搜索值?
我看过使用数字的示例,如下所示:

invited.0.used: true


但这不是我要搜索的内容,因为我不知道此元素在列表中的何处,因此如何将键为84026702的数组更新为true?如果我有100个受邀数组,该如何更新密钥为43938432怎么办?

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

最佳答案

update({ invited.key : 84026702 }, { invited.$.used : true });


这基本上可以满足您的要求,并且应该可以很好地工作。查看mongodb中的位置运算符:http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator

或者在PHP中(如您的问题所示),您可以执行以下操作:

$mongo->collection->update(array('invited.key' => 84026702), array('invited.$.used' => true));

09-25 16:18