Mongo聚合查询到java
问题描述:
我有下面的聚合查询。我对mongo世界很陌生。有人可以帮我翻译成等效的JAVA查询。Mongo聚合查询到java
db['mnocollection'].aggregate([
{ $match : { $and : [ {"stId" : { "$gte" : 1 }}, {"stId" : { "$lte" :
410 }} ] } },
{$sort: { "objId" : -1 }},
{$group:
{
_id : "$objId",
"maxstId" : {$max: "$stId" },
"idVal" : {$first : "$_id"}
}},
{$project: { idVal : 1, _id : 0, maxstId : 1}},
{ $skip: 0 },
{ $limit: 500}
]);
我遵循java的结构。
AggregateIterable<Document> output=mongoCollection.aggregate(Arrays.asList(...));
答
静态导入helper类的所有方法并使用下面的代码。
import static com.mongodb.client.model.Accumulators.*;
import static com.mongodb.client.model.Aggregates.*;
import static java.util.Arrays.asList;
import static com.mongodb.client.model.Sorts.*;
import static com.mongodb.client.model.Filters.*;
import static com.mongodb.client.model.Projections.*;
Bson match = match(and(gte("stId", 1), lte("stId", 410)));
Bson sort = sort(descending("objId"));
Bson group = group("$objId", first("maxstId", "$stId"), first("idVal", "$_id"));
Bson projection = project(fields(include("idVal", "maxstId"), excludeId()));
Bson skip = skip(0);
Bson limit = limit(500);
AggregateIterable<Document> output = mongoCollection.aggregate(asList(match, sort, group, projection, skip, limit));
我发布后,我能够使用github上的文件进行转换....感谢反正:) – ProgrammerBoy