$拉在MongoDb中没有按预期工作

我有一个数组,我试图删除基于_id的数据,但部分数据正在被拔出和NULL值填充,而不是。

排列

 vehicle : [ { data :{ _id:"adkabd", "type":"ffff" }, "_id":"amklam", "history":[], "addedon":"date" }, { data :{ _id:"adkcbbd", "type":"ffff" }, "_id":"amklam", "history":[], "addedon":"date" }] 

现在我想提取这些数据

 { data :{ _id:"adkabd", "type":"ffff" }, "_id":"amklam", "history":[], "addedon":"date" } 

完全基于_id:"adkabd"

更新的命令:

 async.series( [ function(callback) { Models.DispatchOrder.update({'vehicle.data._id': criteria._id}, {$unset:{'vehicle.$':""}}, callback() ); }, function(callback){ Models.DispatchOrder.update( {'vehicle': null}, {$pull: {'vehicle':null}}, callback() ); } ], function(err,resp){ if(err) callback(err) callback(resp) } ); 

error : Trace: ERROR OCCURED [ undefined, undefined ]

现在请忽略括号。 目前在输出我得到

 data : null "_id":"amklam", "history":[], "addedon":"date" 

控制器中的代码:

 var deleteVehicle = function(params, callbackRoute){ var projection = {}; var options = {limit: 1}; var criteria = { _id: params._id }; Services.deleteDispatchVehicle(criteria, function (err, resp) { if (err) { callbackRoute(err) } else { if(resp.result.n === 0) return callbackRoute("Id not found"); callbackRoute(null, {}); } }) } 

这应该工作

 Model.collection.update({'vehicle.data._id': params._id}, {$pull : {vehicle: {'data._id': params._id}},