我正在使用最新版本的morphia(1.3.2),我试图在Java中复制以下成功的mongodb聚合阶段:
{
_id: null,
pv: { $push: { t: '$_id', c: '$c' }}
}
舞台的示例输入是:
{
"_id" : NumberLong(1487808017),
"c" : NumberInt(1)
}
{
"_id" : NumberLong(1487808210),
"c" : NumberInt(1)
}
{
"_id" : NumberLong(1487808914),
"c" : NumberInt(1)
}
,预期输出为:
{
"_id" : null,
"pv" : [
{
"t" : NumberLong(1487808017),
"c" : NumberInt(1)
},
{
"t" : NumberLong(1487808210),
"c" : NumberInt(1)
},
{
"t" : NumberLong(1487808914),
"c" : NumberInt(1)
}
}
我到目前为止最接近的是:
.group(Group.grouping("pv", Accumulator.accumulator("$push", (Object) "{t: '$_id', c: '$c'}")))
但是morphia将我的累加器解释为显式字符串。
如果有人可以建议正确的Java语法来实现这个操作,那将非常感激。
答案 0 :(得分:3)
Gah,经过几个小时的搜索,我在OP的几分钟内找到了答案:
.group(Group.grouping("pv", Group.grouping("$push", Projection.projection("t", "_id"), Projection.projection("c", "c"))))
我在浏览morphia测试here时遇到了可能的解决方案。