提问者:小点点

如何包括多个分组与累加器在一个摩洛哥查询?


我试图在我的DB中查询一个集合,并按它们的日期字段聚合它们。为此,我编写了这个查询,它将字段累积在一个数组中,并按它们的日期对它们进行分组-

db.myclass.aggregate([ { $group : { _id : {$dayOfYear : "$df"}, ts: { $push: {t:"$c"} } } } ])

这个查询在翻译成莫菲亚时效果非常好-

datastore.createAggregation(MyClass.class)
                .match(query)
                .group(  Group.id(Group.grouping("$dayOfYear", "df"))
                      ,Group.grouping("ts", Accumulator.accumulator("$push","c"))
                      ,Group.grouping("date", Group.first("df"))
                      )
                .project(   projection("ts")
                        ,projection("date")
                        ,projection("day", projection("$dayOfMonth","date"))
                        ,expression("month", projection("$month","date"))
                        ,expression("year", projection("$year","date"))
                      )
                .sort(Sort.ascending("_id"))
                .aggregate(MyDate.class, AggregationOptions.builder().batchSize(100).outputMode(OutputMode.CURSOR).build());

现在我想重写这个MongoDB聚合在摩洛哥,它有两组数组需要累积-

db.findings.aggregate([ { $group : { _id : {$dayOfYear : "$df"}, ts: { $push: {t:"$c"} }, prs: { $push: {pr:"$p"} } } } ])

为此,我使用了与上述相同的摩洛哥查询,但包含了第二个分组Group. grouping("prs",Accumulator.addulator("$push","p")),然后将其添加到.project-投影("prs")

这似乎行不通,我做错了什么?


共1个答案

匿名用户

问题不在于查询;这是我试图检索的数组的域对象字段类型。

当我应该创建Integer[]时,我创建了一个String[]。纠正这个问题。

我真的希望莫菲亚抛出合适的错误,这样我就可以在很久以前调试这个。