2012-09-24 5 views
2

Je ces données Mongo:Tirez un élément secondaire de sous-réseau dans MongoDB (js natifs ou pilote .NET)

{ 
    "_id": ObjectId("505fd43fdbed3dd93f0ae088"), 
    "categoryName": "Cat 1", 
    "services": [ 
     { 
      "serviceName": "Svc 1", 
      "input": [ 
------------------------------------------------------------------------- 
       { "quantity": 10, "note": "quantity = 10" }, 
------------------------------------------------------------------------- 
       { "quantity": 20, "note": "quantity = 20" } 
      ] 
     }, 
     { 
      "serviceName": "Svc 2", 
      "input": [ 
       { "quantity": 30, "note": "quantity = 30" }, 
       { "quantity": 40, "note": "quantity = 40" } 
      ] 
     } 
    ] 
} 

Maintenant, je veux tirer élément { "quantity" : 10, "note" : "quantity = 10" } du tableau d'entrée. Comment puis-je faire avec Mongo?

+0

Voulez-vous dire que vous voulez supprimer cet élément de tableau de la doc? – JohnnyHK

+0

Oui, JohnnyHK, l'élément en gras. – Johnny

Répondre

1

QU'AVEC l'opérateur $pull avec un update de le faire, en utilisant l'opérateur de position $ pour identifier quel élément services vous ciblez:

db.collection.update(
    { "_id" : ObjectId("505fd43fdbed3dd93f0ae088"), 'services.serviceName': 'Svc 1' }, 
    { $pull: { 'services.$.input': { "quantity" : 10, "note" : "quantity = 10" } } } 
); 
+0

Cela fonctionne! Merci beaucoup JohnnyHK pour votre solution! :) – Johnny