2017-04-09 9 views
2

初めてmongoDBを試しています。あるコレクションから別のコレクションにデータを集約する必要があります。このコードをしようとしていますが、予期しないエラーが実行されなかっ:ネストされたグループを照会し、mongodbをプッシュ

"予期しない式$グループ"

db.import.aggregate([{ 
     $group: { 
      _id: { 
       day: "$Day", 
       month: "$Month", 
       year: "$Year" 
      }, 
      manufacturers: { 
       $push: { 
        $group: { 
         _id: { 
          manID: "$Man_ID", 
          man_name: "$Man_Name" 
         }, 
         types: { 
          $push: { 
           model_name: "$Model_name", 
           body_type: "$Body_type" 
          } 
         } 
        } 
       } 
      } 
     } 
    }, 
    { $out: "output_doc" } 
], { 
    allowDiskUse: true, 
    cursor: {} 
}); 

予想される出力:

["$Day","$Month","$Year", 
    ["$Man_ID","$Man_Name", 
     ["$Model_name","$Body_type"] 
    ] 
] 

答えて

1

あなただけプッシュすることができます新しい_idフィールドを作成し、オペレータなしでtypesアレイを作成します。

db.import.aggregate([{ 
    $group: { 
     _id: { 
      day: "$Day", 
      month: "$Month", 
      year: "$Year" 
     }, 
     manufacturers: { 
      $push: { 
       _id: { 
        manID: "$Man_ID", 
        man_name: "$Man_Name" 
       }, 
       types: [{ model_name: "$Model_name", body_type: "$Body_type" }] 
      } 
     } 
    } 
}]) 
+0

こんにちはバートランド。私はこのクエリを試したが、それはしばらくの間実行され、接続はデータベースインスタンスに終了します。接続を再開し、他の基本的なクエリを実行しようとしました。それらのクエリでうまく動作します。私は再度このクエリを実行しようとしましたが、接続が再び落ちました。私はそれが1.7mレコードのような私のコレクションのサイズのためにクエリかどうかわからない。 – Avi

+0

問題が見つかりました。クエリが機能しました。ありがとう – Avi

関連する問題