2017-06-23 11 views
0

コレクションがどのように元の構造にこれを逆にアンワインドアンワインドアグリゲーションを元に戻す方法は?

{ "_id" : 1, "item" : "ABC1", "sizes" : "S" } 
{ "_id" : 1, "item" : "ABC1", "sizes" : "M" } 
{ "_id" : 1, "item" : "ABC1", "sizes" : "L" } 

{ "_id" : 1, "item" : "ABC1", sizes: [ "S", "M", "L"] } 

だった考えますか?

構造を変更せずにコレクションを取得したいですが、グループ集計を試みましたが、期待したものが得られません。

実は私の問題だった、私は私の入力コレクションがアンワインドとグループ をして実行した後に元のコレクションを取得できませんでした:

{ 
    "journeys" : { 
     "_id" : "8", 
     "originDate" : ISODate("2017-06-27T03:55:00.000Z"), 
     "destinationDate" : ISODate("2017-06-27T08:55:00.000Z"), 


     "dir" : "OUTBOUND", 
     "proposals" : [ 
      { 
       "_id" : "35", 
       "price" : { 
        "posCurrencyPrice" : "SEK 281.00", 
        "defaultCurrencyPrice" : "SEK 281.00" 
       }, 
       " 
       "trainClass" : "1st Class", 
       "trainClassCode" : "FIRST", 

      }, 
      { 
       "_id" : "39", 
       "price" : { 
        "posCurrencyPrice" : "SEK 377.00", 
        "defaultCurrencyPrice" : "SEK 377.00" 
       }, 
       "trainClass" : "2nd Class", 
       "trainClassCode" : "SECOND", 


      }, 

} 


{ 
    "journeys" : { 
     "_id" : "10", 
     "originDate" : ISODate("2017-06-27T04:20:00.000Z"), 
     "destinationDate" : ISODate("2017-06-27T10:50:00.000Z"), 

     "dir" : "OUTBOUND", 
     "proposals" : [ 
      { 
       "_id" : "49", 
       "price" : { 
        "posCurrencyPrice" : "SEK 490.00", 
        "defaultCurrencyPrice" : "SEK 490.00" 
       }, 

       "trainClass" : "1st Class", 
       "trainClassCode" : "FIRST", 



      }, 

    } 
} 

私は私の期待出力が

ある の提案から2番目のクラスをフィルタリングしたいです
{ 
    "journeys" : { 
     "_id" : "8", 
     "originDate" : ISODate("2017-06-27T03:55:00.000Z"), 
     "destinationDate" : ISODate("2017-06-27T08:55:00.000Z"), 


     "dir" : "OUTBOUND", 
     "proposals" : [ 
      { 
       "_id" : "35", 
       "price" : { 
        "posCurrencyPrice" : "SEK 281.00", 
        "defaultCurrencyPrice" : "SEK 281.00" 
       }, 
       " 
       "trainClass" : "1st Class", 
       "trainClassCode" : "FIRST", 

      }, 


} 


{ 
    "journeys" : { 
     "_id" : "10", 
     "originDate" : ISODate("2017-06-27T04:20:00.000Z"), 
     "destinationDate" : ISODate("2017-06-27T10:50:00.000Z"), 

     "dir" : "OUTBOUND", 
     "proposals" : [ 
      { 
       "_id" : "49", 
       "price" : { 
        "posCurrencyPrice" : "SEK 490.00", 
        "defaultCurrencyPrice" : "SEK 490.00" 
       }, 

       "trainClass" : "1st Class", 
       "trainClassCode" : "FIRST", 



      }, 

    } 
} 

は、次のコードを実行し、別のコレクション

db.searchResource.aggregate({ "$match" : { "_id" : ObjectId("5951d7217f4a9810ccca7289")}}, 
{ "$project" : { "_id" : 0 , "journeys" : "$rssSearchResponse.journeys"}} , { "$unwind" : "$journeys"}, 
{ "$unwind" : "$journeys.proposals"},{ "$match" : { "journeys.proposals.trainClass" : "1st Class"}}, 
{$group:{"_id":"$journeys._id","originDate": { "$first": "$journeys.originDate" }, 
"destinationDate": { "$first": "$journeys.destinationDate" }, 


"dir": { "$first": "$journeys.dir" }, 
"proposals":{ "$push" : "$journeys.proposals" }}}) 
結果

出力した:

{ 
     "_id" : "8", 
     "originDate" : ISODate("2017-06-27T03:55:00.000Z"), 
     "destinationDate" : ISODate("2017-06-27T08:55:00.000Z"), 


     "dir" : "OUTBOUND", 
     "proposals" : [ 
      { 
       "_id" : "35", 
       "price" : { 
        "posCurrencyPrice" : "SEK 281.00", 
        "defaultCurrencyPrice" : "SEK 281.00" 
       }, 
       " 
       "trainClass" : "1st Class", 
       "trainClassCode" : "SECOND", 

      }, 






     "_id" : "10", 
     "originDate" : ISODate("2017-06-27T04:20:00.000Z"), 
     "destinationDate" : ISODate("2017-06-27T10:50:00.000Z"), 

     "dir" : "OUTBOUND", 
     "proposals" : [ 
      { 
       "_id" : "49", 
       "price" : { 
        "posCurrencyPrice" : "SEK 490.00", 
        "defaultCurrencyPrice" : "SEK 490.00" 
       }, 

       "trainClass" : "1st Class", 
       "trainClassCode" : "FIRST", 



      }, 


} 

答えて

0

グループは確かにあなたの応答のためのあなたの質問

db.items.aggregate([ 
    {$match: {}}, 
    {$unwind: "$sizes"}, 
    {$group: { 
     _id: "$_id", 
     sizes: {$push: "$sizes"} 
    }} 
]) 
+0

ありがとうへの答えです。私は自分のコードでこれを試した。私は結果が得られましたが、予想から少し変化しました。 –

関連する問題