将$addToset与java morphia聚合一起使用
我有一个mongodb聚合查询,它在shell中工作得非常好。 如何重写此查询以用于morphia将$addToset与java morphia聚合一起使用,java,mongodb,morphia,Java,Mongodb,Morphia,我有一个mongodb聚合查询,它在shell中工作得非常好。 如何重写此查询以用于morphia org.mongodb.morphia.aggregation.Group.addToSet(字符串字段)只接受一个字段名,但我需要将对象添加到集合中 查询: ......aggregate([ {$group: {"_id":"$subjectHash", "authors":{$addToSet:"$fromAddress.address"}, ---->&g
org.mongodb.morphia.aggregation.Group.addToSet(字符串字段)
只接受一个字段名,但我需要将对象添加到集合中
查询:
......aggregate([
{$group:
{"_id":"$subjectHash",
"authors":{$addToSet:"$fromAddress.address"},
---->> "messageDataSet":{$addToSet:{"sentDate":"$sentDate","messageId":"$_id"}},
"messageCount":{$sum:1}}},
{$sort:{....}},
{$limit:10},
{$skip:0}
])
Java代码:
AggregationPipeline aggregationPipeline = myDatastore.createAggregation(Message.class)
.group("subjectHash",
grouping("authors", addToSet("fromAddress.address")),
--------??????------>> grouping("messageDataSet", ???????),
grouping("messageCount", new Accumulator("$sum", 1))
).sort(...)).limit(...).skip(...);
这目前不受支持,但如果您要提交一个文件,我很乐意将其包含在即将发布的版本中。谢谢您的回答,我可以根据源代码猜测:( 我不想直接使用spring数据或java驱动程序(对于这个项目),所以我更改了我的文档表示 添加了
messageDataSet
对象,该对象包含sentDate
和messageId
(以及一些其他嵌套对象)(这些值在设计糟糕的文档中重复)
聚合变为:“messageDataSet”:{$addToSet:“$messageDataSet”},
Java代码是:分组(“messageDataSet”,addToSet(“messageDataSet”),
这对moprhia有效,谢谢