我很惊讶蒙哥还没有解决这个问题。总的来说,mongo在处理子数组时似乎不是很好。例如,不能简单地计算子数组。
我用了哈维尔的第一个解决方案。将数组读入事件,然后循环并生成set exp:
var set = {}, i, l;
for(i=0,l=events.length;i<l;i++) {
if(events[i].profile == 10) {
set['events.' + i + '.handled'] = 0;
}
}
.update(objId, {$set:set});
可以使用条件测试的回调将其抽象为函数