2012-11-19 41 views
1

我想下面的文件中刪除"virtualNumber" : "12345"如何刪除mongodb中的深度數組?

{ 
"_id" : ObjectId("50a9db5bdc7a04df06000005"), 
"billingInfo" : null, 
"date" : "dsfdsfsdfsd", 
"description" : "sdfsdff", 
"pbx" : { 
    "_id" : ObjectId("50a9db5bdc7a04df06000006"), 
    "did" : { 
    "7259591220" : { 
     "inventoryId" : "509df7547e84b25e18000001", 
     "didcountry" : "india", 
     "didState" : "bangalore", 
     "routeType" : "CallForward", 
     "didNumber" : "7259591220", 
     "didVirtualNumbers" : [ 
     { 
      "virtualNumber" : "12345" 
     }, 
     { 
      "virtualNumber" : "56789" 
     } 
     ], 
     "id" : ObjectId("50a9db9acdfb4f9217000002") 
    } 
    }, 
}, 

我使用Node.js的,所以我建立在JavaScript的查詢:

var query = {_id: ObjectId("50a9db5bdc7a04df06000005")}; 

var obj = {}; 
obj["pbx.did.7259591220.didVirtualNumbers.virtualNumber"]=12345; 
//problem 
collection.update(query,{$pull:obj}); 

回答

2

你需要匹配像數組元素:

{"$pull": {"pbx.did.7259591220.didVirtualNumbers": {"virtualNumber": "12345"}}} 

所以,你應該更改您的代碼:

obj["pbx.did.7259591220.didVirtualNumbers"]={"virtualNumber": "12345"}; 
+0

感謝,但它不工作,查詢是{ '$拉':{「 pbx.did.7259591220.didVirtualNumbers':{virtualNumber:'12345'}}} – user2587222

+0

當我將問題中的文檔保存到我的數據庫中的「objects」集合中時,我可以使用查詢''從文檔中刪除virtualNumber「12345」 db.objects.update({「_ id」:ObjectId(「50a9db5bdc7a04df06000005」)},{「$ pull」:{「pbx.did.72595912 20.didVirtualNumbers「:{」virtualNumber「:」12345「}}})'。在此查詢後,該文檔僅包含其他虛擬編號「56789」。 – Lauri

+0

我完全按照相同的查詢,但我不知道我在哪裏出錯... – user2587222

相關問題