0

I wrote this query to delete the agentName and agentNumber from the array when a match is found. I don't know why its not working.

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

Here's the db:

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

1 Answers1

0

Replace your function with

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

    res.json(data);

  });

Or for a better understanding you can refer this question.

Community
  • 1
  • 1
Ajitej Kaushik
  • 932
  • 9
  • 30
  • didn't work. What exactly should i write in place of query. I can get **agentNumber** from the controller – epskip Jul 26 '16 at 05:39
  • by query i mean if you are having any condition like `{id: req.params.id}`. Something like this. If you arent passing any query ,then your code will look like `db.collection('departments').findOneAndUpdate({$pull:{"agents" : {'agentNumber':xxxxx}}},function(err,result) {//your functionality});` – Ajitej Kaushik Jul 26 '16 at 05:46
  • I could get **agentNumber** as the query. `db.collection('departments').update({"agentNumber": agentNumber}, {$pull:{"agents" : {'agentNumber':xxxxx}}},function(err,result) { console.log("Agent Deleted successfully") console.log(err) })` – epskip Jul 26 '16 at 05:52
  • Put an err check also, i will edit my answer upto your requirement, and then you can see. – Ajitej Kaushik Jul 26 '16 at 05:53