如何将下面的MongoDB外壳代码翻译成Morphia?

如何将下面的MongoDB外壳代码翻译成Morphia?,mongodb,mongodb-query,aggregation-framework,morphia,Mongodb,Mongodb Query,Aggregation Framework,Morphia,我有以下mongodb外壳代码正在工作: db.campaigns.aggregate([ {$lookup: {from: "email_statistics", localField: "_id", foreignField: "campaign_id", as: "stats"}}, { $unwind : "$stats" }, { $match : { "stats.opened": t

我有以下mongodb外壳代码正在工作:

  db.campaigns.aggregate([
                {$lookup: {from: "email_statistics", localField: "_id", foreignField: "campaign_id", as: "stats"}},
                { $unwind : "$stats" },
                { $match : { "stats.opened": true } },
                { $group : { _id : "$parent_user_id", total: { $sum: 1 } } },
                { $sort : { total: -1 } }
                ])      
我的应用程序正在使用Morphia库与mongoDB交互,我想在Morphia中编写上面的代码片段。我写那封信有困难

这是我写的,但它没有给我结果

Query<Campaign> q = DBHelper.getDB().createQuery(Campaign.class);
            q.disableValidation().filter("stats.replied", true);

Iterator<CountResult> aggregation = DBHelper.getDB().createAggregation(Campaign.class)
            .lookup("email_statistics", "id", "campaign_id", "stats")
            .unwind("stats")
            .match(q)
            .group("parent_user_id",grouping("count", accumulator("$sum", 1)))
            .sort(descending("count"))
            .limit(number_of_users)
            .aggregate(CountResult.class);

--------

您需要
“\u id”
,而不是
“id”
。在这里
.lookup(“email\u statistics”、“id”、“campaign\u id”、“stats”)
。这些“应该”是指实际字段名的“字符串文字”,而不是类属性名。聚合的“调试基础”将其管道化以“一次执行一个阶段”。然后你就可以清楚地看到你的错误在哪里了。@NeilLunn我修改了它,让它完全按照我的意图工作。但是,查询非常耗时,大约需要3分钟。。即使在MongoShell上,我也可以在下面的Shell查询
db.campetings.aggregate([{$lookup:{from:“email\u statistics”,localField:“\u id”,foreignField:“campeting\u id”,as:“stats”},{$unwind:“$stats”},{$match:{“stats.opened”:true},{$group:{u id:“$parent_user_id”,统计:{$push:“stats”},总计:{$sum:1}},{$sort:{total:-1}}])
Campaign 
{
id  
parent_user_id
}       

Statistic
{
campaign_id
replied
}