2016-05-05 14 views
-1

Wie bekomme ich jede ProduktID im Warenkorb von unten Dokument in Mongodb.So erhalten Sie Filialwert Filialdokumente aus Array

{ 
    "_id": ObjectId("572992d6fc8b7a5c613248f6"), 
    "userId": "0001", 
    "fname": "Ankur", 
    "lname": "Vishnoi", 
    "address1": "Palam", 
    "city": "New Delhi", 
    "state": "Delhi", 
    "pin": 110077, 
    "cart": [ 
     { 
      "productId": 8, 
      "cartQty": 1 
     }, 
     { 
      "productId": 2, 
      "cartQty": 3 
     }, 
    ] 
} 

Antwort

1

Sie können die Mongo Aggregate-Funktion verwenden, um die Array-Elemente abzuwickeln. Wenden Sie dann $ project an, um die productId zu erhalten.

db.coll.aggregate([ 
    {$unwind : "$cart"}, 
    {$project : { _id : 0, "productId" : "$cart.productId"}} 
]) 

Ergebnis:

{ "productId" : 8 } 
{ "productId" : 2 } 
0

Sie sollten Ihre Dokumente mit dem die $unwind Pipeline-Betreiber de-normalisieren, wenn Sie zu haben. Der beste Weg dazu ist der Operator $map.

db.carts.aggregate([ 
    { "$project": { 
     "productId": { 
      "$map": { 
       "input": "$cart", 
       "as": "crt", 
       "in": "$$crt.productId" 
      } 
     } 
    }} 
]) 
Verwandte Themen