2014-09-05 1 views
1

У меня есть один вопрос о мангусте:Как запрашивать и обновлять все документы массив

У меня есть коллекция «пользователи» в «MongoDB», и все они имеют «друзья» массив, мне нужно нажать новые данные массив «друзей» конкретных пользователей, есть ли способ сделать это с помощью одного запроса?

Это схема:

var userSchema = mongoose.Schema({ 
    name : String, 
    pictureUrl : String, 
    devices : [String], 
    friends : [String] 
}); 
mongoose.model('user',userSchema); 

Я хочу сделать что-то вроде этого

friends = [7823g87yh87y,ou327ujjghd9,py98hd98y23yh]; 
newUser["_id"] = ObjectId(236487g872he87y78); 

user.update(
    {"_id": friends}, 
    {$push: {"friends": newUser["_id"]}}, 
    function (err, data) { 
     if (err) 
      console.log(err); 
    }); 
+0

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

+0

Я хочу получить все пользовательские «друзья» документы, обновить массив «друзей» и сохранить, спасибо за ответ –

ответ

1

Вы можете использовать $in, чтобы соответствовать _id против массива значений, а {multi: true} вариант примените обновление ко всем соответствующим документам, а не только первым:

user.update(
    {"_id": {$in: friends}}, 
    {$push: {"friends": newUser["_id"]}}, 
    {multi: true}, 
    function (err, data) { 
     if (err) 
      console.log(err); 
    }); 
+0

Точно, что мне было нужно, большое спасибо) –

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