2015-08-02 2 views
0

Привет, я пытаюсь обновить только первые пять документов из моей схемы, используя mongoose. Я нашел способ обновить документы, предоставив условие, но не могу обновить только первые пять.Mongoose update first five documents

Я получил этот код

mongoose.model('person').update({active:false} , {multi: true} , function(err,docs) { ... }); 

Спасибо

ответ

1

Ключевым моментом здесь является, чтобы получить первые 5 _id значения соответствия вашего состояния, а затем передавать их с помощью $in для вашего выбора обновления:

mongoose.model('person').find({ "active": { "$ne": false }}).limit(5) 
    .exec(function(err,docs) { 
    var ids = docs.map(function(doc) { return doc._id }); 
    mongoose.model('person').update(
     { "_id": { "$in": ids } }, 
     { "$set": { "active": false } }, 
     { "multi": true }, 
     function(err,numAffected) { 

     } 
    ); 
}); 

Также обратите внимание на правильные аргументы оператора обновления с запросом и блок «обновления». Вы также должны использовать операторы обновления, такие как $set, иначе вы переписываете существующий контент документа только с содержимым блока «обновления».

Также см. Метод .update() из основной документации.

Смежные вопросы