java - 复制按字段值分组

标签 java mongodb spring-data-mongodb mongodb-java mongodb-java-3.3.0

我正在尝试执行以下代码:

MongoDatabase db = MongoDatabaseConnector.getDatabase();
    MongoCollection<Document> chatLogCollection = db.getCollection("chatLog");

    AggregateIterable<Document> result = chatLogCollection.aggregate(Arrays.asList(
            new Document("$group", new Document("_id", new Document("sessionId", "$sessionGUID").append("time", "$ts").append("makerID", "$makerID"))),
            new Document("$sort", new Document("time", -1)),
            new Document("$skip", skip),
            new Document("$limit", limit)
    ));

正如我所料,输出不应具有重复的 sessionId 值,因为我正在使用 group by sessionId。但问题是结果输出具有重复的 sessionId 值。

[
{
    "displayName": "Unauthenticated User",
    "sessionId": "7b60615d-5909-1bf8-e5b9-6ee55e08452d",
    "time": {
        "$date": 1499759790117
    },
    "makerID": "NA"
},
{
    "displayName": "Unauthenticated User",
    "sessionId": "0a6b5db0-fecf-a7c2-9757-67e562b7e37e",
    "time": {
        "$date": 1499840350180
    },
    "makerID": "NA"
},
{
    "displayName": "Unauthenticated User",
    "sessionId": "0a6b5db0-fecf-a7c2-9757-67e562b7e37e",
    "time": {
        "$date": 1499840353438
    },
    "makerID": "NA"
}

  ]

最佳答案

尝试仅按 sessionId 进行分组,如下所示:

    AggregateIterable<Document> result = chatLogCollection.aggregate(Arrays.asList(
                new Document("$group", new Document("_id", "$sessionGUID")
                        .append("time", new Document("$first", "$ts"))
                        .append("makerID", new Document("$first","$makerID"))),
                new Document("$sort", new Document("time", -1)),
                new Document("$skip", skip),
                new Document("$limit", limit)
        ));

关于java - 复制按字段值分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45050672/

相关文章:

java - ViewPager 卡住了

java - 无法执行目标 org.springframework.boot :spring-boot-maven-plugin:1. 3.3.RELEASE:run

java - spring data mongodb版本与spring的兼容性

mongodb - Spring Data mongo 按 2 个字段值的差异进行过滤

java - 服务委托(delegate)抛出 "LazyInitializationException: could not initialize proxy - no Session"

java - Spark Java API : How to convert JavaRDD to RDD type

mongodb - 在查询中使用大写字母时,elasticsearch 将不起作用

MongoDB 查询聚合/分组依据和几何/位置/geoNear 查询

node.js - Jest 的 globalSetup 使我的测试无法被识别

spring-data-mongodb - spring data mongodb 是否支持 $addToSet 上的 $each 运算符?