2012-06-18 81 views
0

我有一个MongoDB的集合,它看起来像这样编辑值:搜索和MongoDB中

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

我要查找其title进入我的查询(比如说,array("title" => "Entry 1"))匹配,并改变其visible属性。

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

回答

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 } ] } 
+0

谢谢!我知道它必须是简单的! –