これがクエリです
[
{
"$project": {
"formattedDate": {
"$dateToString": { "format": "%Y-%m-%d", "date": "$ceatedAt" }
},
"createdAtMonth": { "$month": "$ceatedAt" },
"rating": 1
}
},
{
"$group": {
"_id": "$formattedDate",
"average": { "$avg": "$rating" },
"month": { "$first": "$createdAtMonth" },
}
}
]
タイムスタンプに日付が必要です。どうやってするか?
_$subtract
_算術集計演算子を日付としてminuendおよびnew Date("1970-01-01")
assubtrahend。
_db.collection.aggregate(
{
$project: { "timestamp": { $subtract: [ "$createdAt", new Date("1970-01-01") ] } }
}
);
_
文書用
_{ "_id": 1, "createdAt": ISODate("2016-09-01T14:35:14.952Z") }
_
結果は
_{ "_id": 1, "timestamp": NumberLong("1472740514952") }
_
タイムスタンプと(年、月、日付)の両方でグループ化する場合は、タイムスタンプを1日のミリ秒の長さで除算して、1日ごとに(ミリ秒ごとではなく)一意にすることができます。
_db.collection.aggregate(
{
$project:
{
"timestampByDay":
{
$floor:
{
$divide:
[
{ $subtract: [ "$createdAt", new Date("1970-01-01") ] },
24 * 60 * 60 * 1000
]
}
},
"date": "$createdAt"
}
},
{
$group:
{
"_id": "$timestampByDay",
"date": { $first: "$date" }
}
}
);
_