2017-10-08 8 views
1

MongoDB 3.4.9を使用しています。月間レポートw.r.t.を持っています。顧客情報、そしてここで、ネストされた項目とエラーとサンプル例MongoDBのレコードが受信されては、次のとおりです。集約パイプラインでBSONタイプの文字列を日付に変換できません

はここ

{ 
"_id" : ObjectId("59da6a331c7a9ac0b6674fe8"), 
"date" : ISODate("2017-10-08T18:10:59.899Z"), 
"items" : [ 
    { 
     "quantity" : 1, 
     "price" : 47.11, 
     "desc" : "Item #1" 
    }, 
    { 
     "quantity" : 2, 
     "price" : 42.0, 
     "desc" : "Item #2" 
    } 
], 
"custInfo" : "Tobias Trelle, gold customer" 
    } 

{ 
"_id" : ObjectId("59da6a511c7a9ac0b6674fed"), 
"date" : ISODate("2017-10-08T18:11:28.961Z"), 
"items" : [ 
    { 
     "quantity" : 1, 
     "price" : 47.11, 
     "desc" : "Item #1" 
    }, 
    { 
     "quantity" : 2, 
     "price" : 42.0, 
     "desc" : "Item #2" 
    } 
], 
"custInfo" : "Tobias Trelle, gold customer" 
    } 

    { 
"_id" : ObjectId("59da6a511c7a9ac0b6674ff0"), 
"date" : ISODate("2017-10-08T18:11:29.133Z"), 
"items" : [ 
    { 
     "quantity" : 1, 
     "price" : 47.11, 
     "desc" : "Item #1" 
    }, 
    { 
     "quantity" : 2, 
     "price" : 42.0, 
     "desc" : "Item #2" 
    } 
], 
"custInfo" : "Tobias Trelle, gold customer" 
    } 

をこれまでにBSONタイプ文字列から変換することはできませんのためにMongoDBのクエリです合計グループ化をcustInfo月単位で計算する

db.runCommand({aggregate:"order", pipeline : 
[{$match : {$and : [{"date" : {$gte : ISODate("2016-10-08T18:10:59.899Z")}}, 
{"date" : {$lte : ISODate("2018-10-08T18:10:59.899Z")}}]}} 
, 
{ "$project" : { "custInfo" : 1 ,"count" : 1 , "date" : 1 , 
"duration" : {"$month" : [ "date"]}}}, 
{ "$group" : { "_id" : 
    { "duration" : "$duration" , "custInfo" : "$custInfo"} ,"count" : { "$sum" : 1} }} 

    ]}//, 
    //cursor:{batchSize:1000} 

) 

私が間違ったところで助けてください。

よろしく クリス

答えて

1

私は$monthが、ここで、「期間」であると考えられているが、いずれにしても、あなたはドルがフィールド変数と$monthへの呼び出しをサインオフビットをオフにして低下した理由はわかりません。これはうまくいくはずです:

{ "$project" : { "custInfo" : 1 , 
      "count" : 1 , 
      "date" : 1 , 
      "duration" : {"$month" : "$date" } }} 
関連する問題