2016-07-26 52 views
0

我写了这个查询来删除agentNameagentNumber当发现匹配时从数组中。我不知道为什么它不工作。

db.collection('departments').update({}, {$pull:{"agents" : {'agentNumber':xxxxx}}},function(err,result) { 
    console.log("Agent Deleted successfully") 
    console.log(err) 
}) 

这里的DB:

{ 
"name": "xxx", 
"departments": [ 
    { 
     "departmentName": "Technical", 
     "agents": [ 
      { 
       "agentName": "xxx", 
       "agentNumber": "xxx", 
      }, 
      { 
       "agentName": "xxx", 
       "agentNumber": "xxxxx", // 5 x's 
      } 
     ] 
    } 
] 
} 

回答

0

Customer.findOneAndUpdate({agentNumber: agentNumber}, {$pull:{agents : {agentNumber:xxxxx}}},function(err, data){ 
    if(err) { 
     return res.status(500).json({'error' : 'error'}); 
    } 

    res.json(data); 

    }); 

更换您的功能或为了更好的理解,你可以参考this问题。

+0

没有工作。我应该写什么来代替查询。我可以通过查询从控制器 – epskip

+0

获得** agentNumber **,我的意思是如果您有任何条件,比如'{id:req.params.id}'。像这样的东西。如果你没有传递任何查询,那么你的代码将看起来像'db.collection('departments')。findOneAndUpdate({$ pull:{“agents”:{'agentNumber':xxxxx}}},function(err,result) {//你的功能});' –

+0

我可以获得** agentNumber **作为查询。 'db.collection('departments')。update({“agentNumber”:agentNumber},{$ pull:{“agents”:{'agentNumber':xxxxx}}},function(err,result){console.log (“代理已成功删除”) console.log(err) })' – epskip