2017-05-25 4 views
0

私は以下のように従業員jsonをdbに持っていますので、 "addressId"(キー)と "city"(値)のマップを作成して結果を返します。MongoDB:データを地図にプッシュ

{ 
    "_id" :1, 
    "_class" : "com.entity.Employee", 
    "clientId" : 1, 
    "addresses" : [ 
     { 
      "addressId" : 1, 
      "street" : "ghi", 
      "city" : "Hyderabad" 
     }, 
     { 
      "addressId" : 2, 
      "street" : "abc", 
      "city" : "Bangalore" 
     }, 
     { 
      "addressId" : 3, 
      "street" : "def", 
      "city" : "Chennai" 
     } 
    ] 
} 

私が使用できる演算子と、これを$ projectを使用して実現できるかどうかを教えてください。

答えて

1

はいあなたは

はモンゴクエリの下

db.collection_name.aggregate([{"$unwind":"$addresses"},{"$project": {"addressId": "$addresses.addressId", "city":"$addresses.city", "_class":"$_class","clientId":"$clientId"}  }]).forEach(function(ojb){ojb[ojb.addressId]=ojb.city; printjson(ojb);}); 
を試みるキーと値のペアを作るためにアンワインドとはforEachで投影を使用する必要があります