2016-10-11 6 views
1

Я хочу обновить n количество документов на основе массива updateIds. Я использую Mongoose Stream .on ('data, function() {}). Что правильно найти все нужные документы. Но теперь я не уверен, как обновлять каждый документ. Могу ли я просто написать что-то вроде doc.update ({query}, {key: value}) внутри on. ('Data', function (doc) {})?Mongoose Stream, как обновить каждый документ?

Wine.find({ 
    '_id': { $in: updateIds} 
}).stream() 
    .on('data', function(doc){ 
     // how do I update a doc property here? 
    }) 
    .on('error', function(error) { 
     throw error; 
    }) 
    .on('end', function() { 
     // final callback 
    }); 

ответ

2

Вы можете сделать это таким образом.

Wine.find({ 
    '_id': { $in: updateIds} 
}).stream() 
    .on('data', function(doc){ 
     doc.set('property_name', "value"); 
     doc.save(function(err){ 
    }); 
}) 
.on('error', function(error) { 
    throw error; 
}) 
.on('end', function() { 
    // final callback 
}); 

Или, если вы хотите обновить документы с теми же данными, вы можете сделать это,

Wine.update({ _id: { $in: updateIds} }, 
    { property: "value" }, 
    { multi : true}, 
    function(err, count){ 
    }); 
+0

Ну, это имеет смысл. Спасибо! – tonejac