将MongoDB查询转换为MongoDB java驱动程序查询
请帮助我使用java MongoDB驱动程序将以下MongoDB查询转换为基于java的查询。多谢各位将MongoDB查询转换为MongoDB java驱动程序查询,mongodb,mongodb-java,Mongodb,Mongodb Java,请帮助我使用java MongoDB驱动程序将以下MongoDB查询转换为基于java的查询。多谢各位 db.playerscorecollection.aggregate( { $unwind: "$scorearray"}, { $group: { _id: { player: "$player", venue: "$scorearray.venue", score: "$scorearray.score" } } }, { $sort: { "_id.s
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"} } }
)
我还没有检查语法。另外,我也不知道你的查询是否有效,但这是我的尝试
//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();
//展开
DBObject unwind=newBasicDBObject(“$unwind”,“$scorearray”);
//现在是$group操作
dbobjectgroupfields=newbasicdbobobject(“player”,“$player”);
groupFields.put(“场馆”,“$scorearray.场馆”);
groupFields.put(“score”,“$scorearray.score”);
DBObject group=newbasicdbobject($group),newbasicdbobject(“\u id”,groupFields));
//分类
DBObject sort=newBasicDBObject($sort),newBasicDBObject(“\u id.score”:1));
//第二组
DBObject secondGroupFields=newBasicDBObject(“\u id”,“$\u id.player”)
secondGroupFields.put(“maxScore”,新的BasicDBObject($last:“$\u id.score”);
secondGroupFields.put(“地点”,新的基本对象($last:“$\u id.venture”);
DBObject secondGroup=new basicdbobobject(“$group”,secondGroupFields);
//运行聚合
AggregationOutput输出=PlayerCoreCollection.aggregate(展开、分组、排序、第二组);
Iterable结果=output.results();
迭代器迭代器=result.Iterator();
您可以使用此库:
使用此库,您可以使用以下查询字符串:
聚合([{'$match':{'salary':{$gte:'from#Long',$lte:'to#Long'}}},{$group:{{u id:'$role',age':{$sum:'$age'}},{'$sort':{'age':-1},{'$limit 5})
或
聚合({'$match':{'salary':{$gte:'from#Long',$lte:'to#Long'}}},{$group:{{u id:'$role',age':{$sum:'$age'}},{'$sort':{'age':-1},{'$limit:5})
如下例所示传递这些字符串:
String query=“db.users.find({'name':'John'})”;
MongoQueryParser=新的MongoQueryParser();
MongoQuery MongoQuery=parser.parse(查询,newhashmap());
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);
我们很少在没有研究的情况下回答需要代码的问题,这一次你很幸运,通常这些问题都会被关闭。谢谢!是的,我的查询有效,您的解决方案也有效。