2013-07-13 7 views
2

Java MongoDB 드라이버를 사용하여 다음 MongoDB 쿼리를 Java 기반 쿼리로 변환하는 데 도움을주십시오. 고맙습니다.MongoDB 쿼리를 MongoDB java 드라이버 쿼리로 변환

db.playerscorecollection.aggregate(
     { $unwind: "$scorearray"}, 
     { $group: { _id: { player: "$player", venue: "$scorearray.venue", score: "$scorearray.score" } } }, 
     { $sort: { "_id.score" : 1 } }, 
     { $group: { _id: "$_id.player", maxScore: { $last: "$_id.score" }, venue: { $last: "$_id.venue"} } } 
) 
+0

우리가 연구 코드를 요청 질문에 대한 답변 드문 :처럼 당신이 코드를 사용할 수 있습니다이와

http://jongo.org

: 대안

는 또 다른 환상적인 도서관이 운이 좋았을 때, 보통이 질문들은 닫힐 것입니다. – Sammaye

답변

4

구문을 검사하지 않았습니다. 또한 귀하의 쿼리가 작동하는지 여부는 모르겠지만 여기에 내 시도가 있습니다.

 //unwind 
     DBObject unwind = new BasicDBObject("$unwind", "$scorearray"); 
     // Now the $group operation 
     DBObject groupFields = new BasicDBObject("player", "$player"); 
     groupFields.put("venue", "$scorearray.venue")); 
     groupFields.put("score", "$scorearray.score")); 
     DBObject group = new BasicDBObject("$group", new BasicDBObject("_id", groupFields)); 
     //sort 
     DBObject sort = new BasicDBObject("$sort", new BasicDBObject("_id.score":1)); 
     //secondgroup 
     DBObject secondGroupFields = new BasicDBObject("_id", "$_id.player") 
     secondGroupFields.put("maxScore", new BasicDBObject("$last":"$_id.score")); 
     secondGroupFields.put("venue", new BasicDBObject("$last":"$_id.venue")); 
     DBObject secondGroup = new BasicDBObject("$group", secondGroupFields); 

     // run aggregation 
     AggregationOutput output = playerScoreCollection.aggregate(unwind, group,sort,secondGroup); 

     Iterable<DBObject> result = output.results(); 
     Iterator<DBObject> iterator = result.iterator(); 
당신이 라이브러리를 사용할 수 있습니다
+0

감사합니다! 예, 내 쿼리가 작동하며 솔루션도 작동합니다. – user1965449

0

: 당신은 같은 쿼리 문자열을 사용하여이 라이브러리를 https://github.com/EqualExperts/mongo-shell-like-query 을 :

db.users.aggregate ([{ '$ 매치'{ '급여' {$ group : {_id : '$ role', 'age': {$ sum : '$ age'}}}, {$ long : { '$ 정렬'{ '나이': -1}}, { '$ 제한': 5}])

또는

,

db.users.aggregate ({ '$ match': { '급여': {$ gte : 'from Long', $ lte : '~ # Long'}}}, {$ group : {_id : '$ role', 'age': {$ sum : '$ age'}}}, { '$ sort': { 'age': -1}}, { '$ limit': 5})

String query = "db.users.find ({ 'name': 'John'})";이 예제와 같이이 문자열을 전달하면

이됩니다. MongoQueryParser 파서 = 새로운 MongoQueryParser(); MongoQuery mongoQuery = parser.parse (query, new HashMap()); BasicDBList results = mongoQuery.execute (mongoDB); 내 생각에 통합하고 사용하는 것은 매우 빠릅니다. 이것은

DB db = new MongoClient().getDB("dbname"); 
Jongo jongo = new Jongo(db); 
MongoCollection friends = jongo.getCollection("friends"); 
friends.aggregate("{$project:{sender:1}}") 
    .and("{$match:{tags:'read'}}") 
    .and("{$limit:10}") 
    .as(Email.class);