无法将embedded到对象中的表单数组拉入窗体中

我有一个看起来像这样的模型:

contacts: { phones: [{ phone_id: { type: ObjectId }, phone_number: { type: String } }], shared: { phones: [{ phone_id: { type: ObjectId }, phone_number: { type: String }, }] } } 

我有一个端点,在那里我试图删除电话号码匹配一个ID我传递我的查询string。

我的代码如下所示:

  Contacts.update({ 'phones._id': req.params.phone_id }, { "$pull": { "phones": { "_id": req.params.phone_id} }}, { safe: true, multi:true }, function(err, obj) { }); Contacts.update({ 'shared.phones._id': req.params.phone_id }, { "$pull": { "shared.phones": { "_id": req.params.phone_id} }}, { safe: true, multi:true }, function(err, obj) { }); 

从数组中删除数字的第一个更新forms的工作。

但是,第二个应该从“shared.phones”数组中删除数字不会。

任何想法,我失踪?

我尝试使用这样的'$'定位运算符:

  Contacts.update({ 'shared.phones.$._id': req.params.phone_id }, { "$pull": { "shared.phones.$": { "_id": req.params.phone_id} }}, { safe: true, multi:true }, function(err, obj) { }); 

但是,这并没有工作。

提前致谢!

正如一个评论中所说

 { $pull: { 'shared.phones._id': req.params.phone_id } } 

当涉及到嵌套数组时,总是在一个键中使用全部,因为mongodb不喜欢深入一级以上。