Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将MongoDB查询转换为MongoDB java驱动程序查询_Mongodb_Mongodb Java - Fatal编程技术网

将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

请帮助我使用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"} } }
)

我还没有检查语法。另外,我也不知道你的查询是否有效,但这是我的尝试

        //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);

我们很少在没有研究的情况下回答需要代码的问题,这一次你很幸运,通常这些问题都会被关闭。谢谢!是的,我的查询有效,您的解决方案也有效。