2016-11-10 6 views
1

チームと年に等しいすべての文書を検索したいと思います。 created_atフィールドには日付が入ります。日付集計演算子$ monthはクエリの2番目の部分で検索されますが、eq構文は混乱します。MongoDBの日付抽出を伴う集計照会

db.getCollection('datas').aggregate([ 
    { $match : { team_id: '5824a4623bfd05018197792d', $eq: [{ $year: "$created_at" },"2016"] } }, 
    { $group: { _id: { $month: "$created_at" }, avg: { $avg: "$salary" }, count: { $sum: 1 } } } 
]); 

"ERRMSG": "悪いクエリ:BadValueを:不明なトップレベルのオペレータ:$当量"、

サンプル文書:

{ 
    "_id" : ObjectId("5824dc9134ddc60d2e5d0a66"), 
    "team_id" : "5824dc9134ddc60d2e5d0a64", 
    "salary" : 60, 
    "created_at" : ISODate("2016-11-10T20:46:07.045Z"), 
    "__v" : 0 
} 
+0

ごめんなさい、何ですか再度上のクエリのe問題? – Veeram

+0

更新しましたが、構文が間違っています – arisalexis

+0

サンプル文書も追加できますか? – Veeram

答えて

2

あなたが投影することによってそれを行うことができます年初来:

db.getCollection("datas").aggregate([ 
    { $match: { team_id: "5824a4623bfd05018197792d" } }, 
    { $project: { salary: "$salary", created_at: "$created_at", year: { $year: "$created_at" } } }, 
    { $match: { year: 2016 } }, 
    { $group: { _id: { $month: "$created_at" }, avg: { $avg: "$salary" }, count: { $sum: 1 } } } 
+0

が "errmsg"を生成するが、それはどのように役立つのか分からない: "悪いクエリ:BadValue:不明トップレベル演算子:$年" – arisalexis

+0

編集された答え.. – Tomzan