如何将下面的MongoDB外壳代码翻译成Morphia?
我有以下mongodb外壳代码正在工作:如何将下面的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
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
}