2017-04-27 184 views
0

我有下面的聚合查询。我对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(...)); 

回答

2

静态导入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)); 
+0

我发布后,我能够使用github上的文件进行转换....感谢反正:) – ProgrammerBoy