无法将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不喜欢深入一级以上。