mongodb - 将 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.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();

关于mongodb - 将 MongoDB 查询转换为 MongoDB java 驱动程序查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17628786/

相关文章:

mongodb - 存储与分离流相关的数据

MongoDb 聚合按日期分组

node.js - 如何将 MongoDB 连接到 Mongoose 上的 Heroku?

java - MongoDB 在 Java 中映射引用关系

Java-MongoDB 将数组转换为 MongoCollection

javascript - 如何在现有 Node 之间创建/匹配多个关系? (通过相同的参数)

mongodb - 在同一数据库中复制集合的最快方法是什么?

java - MongoDB Java 搜索数组大小

mongodb - 如何知道mongodb是否需要认证?

java - 如何使用java在mongodb中插入数据列表