2016-05-05 7 views
-1

mongodbの下のドキュメントからカート内の各productIDを取得する方法を教えてください。サブ文書のフィールド値を配列から取り出す方法

{ 
    "_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 
     }, 
    ] 
} 

答えて

1

あなたは、配列の要素をほどく$にMongoの集計関数を使用することができます。次に、$ projectを適用してproductIdを取得します。

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

結果:

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

あなたは、あなたがする必要がある場合を除き$unwindパイプライン演算子を使用してドキュメントを非正規化する必要があります。これを行う最善の方法は、$map演算子を使用することです。

db.carts.aggregate([ 
    { "$project": { 
     "productId": { 
      "$map": { 
       "input": "$cart", 
       "as": "crt", 
       "in": "$$crt.productId" 
      } 
     } 
    }} 
]) 
関連する問題