2013-11-20 2 views
6

Интересно, имеет ли mongoose некоторый способ обновления нескольких документов по набору идентификаторов. Например:Обновление нескольких документов по установленному идентификатору. Mongoose

for (var i = 0, l = ids.length; i < l; i++) { 
    Element.update({'_id': ids[i]}, {'visibility': visibility} ,function(err, records){ 
     if (err) { 
      return false; 
     } else { 
      return true; 
     }; 
    }); 
}; 

Что я хочу знать, что если мангуст может сделать что-то вроде этого:

Element.update({'_id': ids}, {'visibility': visibility}, {multi: true} ,function(err, records){ 
    if (err) { 
     return false; 
    } 
}); 

где Идентификаторы представляет собой массив идентификаторов, как [ «id1», «id2», 'id3'] - массив образцов. Тот же вопрос для поиска.

ответ

14

Скорее всего, да. И он вызывается с использованием оператора $in в запросе mongodb для обновления.

db.Element.update(
    { _id: { $in: ['id1', 'id2', 'id3'] } }, 
    { $set: { visibility : yourvisibility } } 
) 

Все, что вам нужно, это найти, как реализовать $ in in mongoose.

+0

Да, вы правы, оператор $ in отлично подходит для мангуста. – user2960708

+0

Могу ли я использовать несколько обновлений, но с командой save? потому что с сохранением у меня есть также проверка – Barno

+6

Возможно ли изменить свойство видимости по-разному для разных значений _id? – Vinay

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