在mongo shell中,我可以这样做:
db.getCollection('usercourses').update({
_id:ObjectId("54bee7c6ababf28b4ea5a07f")},
{
$unset:{
'steps.0.topic':''
}
},
{strict:false})
它将从找到的文档中删除数组内对象的“topic”字段。
但是当我在猫鼬中这样做时:
function() {
return UserCourses.findQ()
.then(function(uCourse){
return Q.all(uCourse.map(worker))
}).catch(function(error) {
console.log(error);
});
}
function worker(uCourse) {
return Q.all(uCourse.steps.map(
function(step,i){
var field1 = 'steps.'+i+'.topic';
return UserCourses.updateQ({_id:uCourse._id},
{
$unset:{field1:''},
},
{strict:false});
}
))
}
什么都没发生。
为什么?
答案 0 :(得分:1)
因为您试图取消设置名为field1
的字段(因为ES5没有computed property names):
$unset : { field1 : '' }
相反,你需要这样做:
var obj = {};
obj['steps.'+i+'.topic'] = '';
...
$unset : obj