2015-07-20 80 views
1

在蒙戈外殼,我可以做到這一點:mongo和mongoose之間的不同行爲?

db.getCollection('usercourses').update({ 
    _id:ObjectId("54bee7c6ababf28b4ea5a07f")}, 
    { 
    $unset:{ 
     'steps.0.topic':'' 
    } 
    }, 
{strict:false}) 

,它會從數組內的對象中刪除「主題」字段中,找到該文件。

但是當我這樣做的貓鼬:

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}); 
    } 
)) 
} 

什麼也沒有發生。

爲什麼?

回答

1

因爲你想取消設置字段名爲field1(因爲ES5沒有computed property names):

$unset : { field1 : '' } 

相反,你需要這樣做:

var obj = {}; 
obj['steps.'+i+'.topic'] = ''; 
... 
$unset : obj 
相關問題