我正在尝试按年份汇总结果,但无法弄清楚为什么它不起作用。
数据看起来像...
{
"_id" : ObjectId("5c0a3f9f97ed291ab951cd7c"),
"ArtNummer" : NumberInt(1),
"Artikelgruppe" : "Brote",
"ArtBezeichnung" : "Schweizer Brot",
"Datum" : ISODate("2016-09-30T22:00:00.000+0000"),
"KundeName" : "Hardt",
"KundenNr" : NumberInt(1),
"GelieferteMenge" : 9.0,
"Retoure" : 0.5,
"VerkaufteMenge" : 3.5
}
和我的查询代码:
use bbn;
db.getCollection("abverkauf").aggregate(
[
{
"$group" : {
"_id" : {
"ArtNr" : "$ArtNr",
"year" : "$year"
}
}
},
{
"$project" : {
"ArtNr" : "$_id.ArtNr",
"year" : { "$year" : "$Datum"}
}
}
],
{
"allowDiskUse" : true
}
);
和结果:
{
"_id" : {
},
"year" : null
}
如何按年份或月份汇总结果?
答案 0 :(得分:1)
您应该更改_id
,因为当前您要引用两个不存在的字段:ArtNr
和year
,而要提取日期的年份则应使用$year作为操作员,请尝试:
db.getCollection("abverkauf").aggregate([
{
"$group" : {
"_id" : {
"ArtNr" : "$ArtNummer",
"year" : { "$year" : "$Datum"}
}
}
},
{
"$project" : {
"ArtNr" : "$_id.ArtNr",
"year" : "$_id.year"
}
}
])
打印:
{ "_id" : { "ArtNr" : 1, "year" : 2016 }, "ArtNr" : 1, "year" : 2016 }