MongoDB - 从单个数组元素中取消设置属性

7 浏览
0 Comments

MongoDB - 从单个数组元素中取消设置属性

如何在Mongo控制台中取消设置单个数组元素的属性。例如,如何取消设置time[1]中的junk属性。

如下所示:

{

"_id" : ObjectId("4d525ab2924f0000000022ad"),

"name" : "hello",

"time" : [

{

"stamp" : "2010-07-01T12:01:03.75+02:00",

"reason" : "new"

},

{

"stamp" : "2010-07-02T16:03:48.187+03:00",

"reason" : "update",

"junk" : "yes"

},

{

"stamp" : "2010-07-02T16:03:48.187+04:00",

"reason" : "update"

},

]

}

0
0 Comments

问题的出现原因是:在MongoDB中,使用$unset操作符来删除文档中的某个属性。但是,当属性存在于一个数组元素中时,$unset只会从第一个匹配的子文档中删除该属性。

解决方法是:使用占位符$来替代$unset操作符中的数组元素索引,以便删除所有匹配的子文档中的属性。具体代码如下:

db.coll.update({"time.junk": "yes"}, {$unset: {"time.$.junk": 1}});

更多关于MongoDB文档符号表示法的信息,请参阅MongoDB官方文档:dot notation

另外,以下是Hassek在Stack Overflow上的一个解决方案:stackoverflow.com/questions/19945924/…

0