为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Morphia查询中包括多个带有累加器的分组?

如何在Morphia查询中包括多个带有累加器的分组?

梦里花落0921 2021-04-09 18:15:47
我正在尝试在我的数据库中查询集合,并按它们的日期字段对其进行汇总。为此,我编写了此查询,该查询将字段累积到数组中并按日期将它们分组-db.myclass.aggregate([ { $group : { _id : {$dayOfYear : "$df"}, ts: { $push: {t:"$c"} } } } ])将此查询翻译为Morphia时,效果很好-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());现在,我想在Morphia中重写此MongoDB聚合,该聚合有两组需要累积的数组-db.findings.aggregate([ { $group : { _id : {$dayOfYear : "$df"}, ts: { $push: {t:"$c"} }, prs: { $push: {pr:"$p"} } } } ])为此,我使用了与上述相同的Morphia查询,但包括了第二个分组 Group.grouping("prs", Accumulator.accumulator("$push","p")),然后将其添加到.project-中projection("prs")。这似乎不起作用。我究竟做错了什么?
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

问题不在于查询。它与我要检索的数组的域对象字段类型有关。

String[]应该创建一个时创建了一个Integer[]。更正该问题已解决。

我真的希望Morphia抛出适当的错误,以便我可以在这个时代之前进行调试。


查看完整回答
反对 回复 2021-04-21
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信