2015-04-14 3 views
0

Я хочу удалить объект из массива. Вот схема я работаю с:Как удалить объект из массива?

event: { 
    invitees: { 
     users : [{ 
      user: { 
       type: String, 
       ref: 'User' 
      }, 
     }], 
    } 
} 

Запрос Я использую перечислен ниже, но он не работает. В принципе, ничего не происходит, когда я запускаю этот скрипт.

Event.update(
     {"_id": req.params.event_id}, 
     {"$pull": {"invitees.users.user": req.params.user_id}}, 
     {safe: true, upsert: true}, 
     function (err, data) { 
      if (err) { 
       console.log(err); 
      } 
      return res.json({ success: true }); 
     } 
    ); 

Что я делаю неправильно?

ответ

1

Оператор field оператора $pull идентифицирует массив, чтобы вытащить элементы, соответствующие его query.

Так что ваше обновление должно выглядеть следующим образом, вместо:

Event.update(
    {"_id": req.params.event_id}, 
    // { $pull: { <array field>: <query> } } 
    {"$pull": {"invitees.users": {"user": req.params.user_id}}}, 
    {safe: true, upsert: true}, 
    function (err, data) { 
     if (err) { 
      console.log(err); 
     } 
     return res.json({ success: true }); 
    } 
); 
Смежные вопросы