在MongoDB中搜索和编辑值

时间:2012-06-18 23:05:43

标签: php mongodb mongodb-php

我有一个看起来像这样的MongoDB集合:

[
    {
        "title": "Entry 1",
        "visible": true
    },
    {
        "title": "Entry 2",
        "visible": true
    }
]

我想找到title与我的查询匹配的条目(例如array("title" => "Entry 1")),并更改其visible属性。

这看起来非常简单,但我还没有找到任何办法。我看到如何将我想要的条目作为数组返回。在我看来,我不应该获取整个对象(它具有比这个例子更多的属性),改变一个小东西,然后再次放置整个对象。我错过了什么?

1 个答案:

答案 0 :(得分:1)

了解positional operator

db.pos.insert({arr: [{"title": "Entry 1", "visible": true},     
                     {"title": "Entry 2", "visible": true}]})

db.pos.update({'arr.title': 'Entry 1'}, 
              {$set: {'arr.$.visible': false}})

db.pos.find()
> { "_id" : ObjectId("4fdfb65e9c9cf2c23bbdd669"), "arr" : [     {   "title" : "Entry 1",    "visible" : false },    {   "title" : "Entry 2",    "visible" : true } ] }