2012-11-19 3 views
1

J'essaie de supprimer "virtualNumber" : "12345" dans le document suivant:Comment supprimer un tableau profond dans 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") 
    } 
    }, 
}, 

J'utilise Node.js, donc je construit une requête en JavaScript:

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

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

Répondre

2

Vous devez correspondre à l'élément de tableau comme:

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

Donc, vous devriez changer votre code:

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

grâce, mais sa ne fonctionne pas, la requête est { 'pull $': { ' pbx.did.7259591220.didVirtualNumbers ': {virtualNumber:' 12345 '}}} – user2587222

+0

Lorsque je sauvegarde le document dans votre question dans la collection "objects" dans ma base de données, je peux supprimer le virtualNumber "12345" du document en utilisant la requête ' db.objects.update ({"_id": ObjectId ("50a9db5bdc7a04df06000005")}, {"$ pull": {"pbx.did.72595912 20.didVirtualNumbers ": {" virtualNumber ":" 12345 "}}})'. Après cette requête, le document contient uniquement l'autre virtualNumber "56789". – Lauri

+0

Je suis exactement la même requête, mais je ne sais pas où je vais mal ... – user2587222

Questions connexes