2016-07-26 50 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