2015-11-28 3 views
0

Я не могу удалить конкретный eventid из UserSchema. Я искал это и получил метод с использованием unset, но это удаление всего пользователя, в то время как функция push ничего не делает. Есть ли другой способ сделать это?Как удалить определенное поле с помощью конидиции в mongodb?

Текущий UserSchema

[ 
    { 
    "_id": "56593f3657e27af8245735d7", 
    "username": "abc", 
    "name": "xyz", 
    "__v": 0, 
    "favouriteid": [ 
    { 
     "eventid": "5659242639e43bfc2a0836b9", 
     "_id": "56593f6b57e27af8245735d8" 
    }, 
    { 
     "eventid": "5659244039e43bfc2a0836ba", 
     "_id": "56593f8857e27af8245735d9" 
    } 
    ] 
    } 
] 

Что need-

[ 
{ 
    "_id": "56593f3657e27af8245735d7", 
    "username": "abc", 
    "name": "xyz", 
    "__v": 0, 
    "favouriteid": [ 
    { 
    "eventid": "5659242639e43bfc2a0836b9", 
    "_id": "56593f6b57e27af8245735d8" 
    } 
    ] 
} 
] 

I будет проходить EventID и идентификатор Но когда я использую этот код, пользователь будет удален сам, а не обязательные поля ,

api.post('/removefavourites', function (req, res) { 
    // _id: req.body.id; 
    User.findById({_id: req.body.userid}, 
     {$unset:{favouriteid: {eventid: req.body.eventid}}}, 
     {upsert: true}, 
     function (err) { 
      if(err) 
      return err; 
      else 
      res.json({success: true}); 
     }); 
}); 

ответ

1

Вы можете использовать метод обновления с операцией тянуть, как показано ниже:

api.post('/removefavourites', function (req, res) { 
    // _id: req.body.id; 
    User.update({_id: req.body.userid}, 
    {$pull:{favouriteid: {eventid: req.body.eventid}}}, 
    function (err) { 
     if(err) 
     return err; 
     else 
     res.json({success: true}); 
    }); 
}); 

Надеется, что это помогает :)

+0

Спасибо, что помогло. – RayOfHope

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