java - Spring mongo 上的聚合

标签 java spring mongodb mongodb-query aggregation-framework

我正在尝试在 spring mongo 层上重新创建此查询。

db.LASTVIEWED_TEST.aggregate([{$match: {'_id' : '12070'}},
                        {$unwind:"$value"},
                         {$match:{"value.Dockey":{"$in":["390", "539","626"]}}},
                         {$group:{_id:"$_id", "value":{$push:"$value"}}}
                        ])

我使用各种方法进行了一些尝试,但是我在这里遇到了示例:

https://github.com/spring-projects/spring-data-mongodb/blob/master/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java

并创建了这个:

Aggregation agg = Aggregation.newAggregation(//
                match(where("entityid").is(entityId)),//
                unwind("$value"), //
                match(where("value.Dockey").in(dockeyList)),//
                group("id").push("$value").as("value")//
                );

但是这个构建器看不到识别 where、unwind 关键字等...并且我的编译器告诉我我的类没有这些方法。

我需要做什么才能将值传递给 newAggregation 构建器。

干杯,

最佳答案

您需要指定Criteria匹配中的对象,通常所有值都只表示为字符串:

    Aggregation agg = newAggregation(
        match(Criteria.where("entityid").is(entityId)),
        unwind("value"),
        match(Criteria.where("value.Dockey").in(dockeyList)),
        group("_id").push("value").as("value")
    );

关于java - Spring mongo 上的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26666575/

相关文章:

Java 项目到 Spring Restful 服务

java - 使用 Java 中的 getter 函数返回可变成员变量(日期/时间戳)?

Java:尽可能有效地比较哈希集

java - 部署 Gitlab CI : The connection attempt failed 时出现问题

spring - 找不到 pom.xml 文件 - Heroku

python - 如何为 pyramid/pylons 2 编写日志记录中间件?

mongodb - 如何在 golang 中获取 mongodb 的转储并恢复它

PHP MongoDB 删除文档并返回

java - 使用 ANTLR4 从 DSL 转换为 Java,需要重建(而不是评估)表达式的策略

java - 如何防止 JAXB 在编码期间写入未使用的 namespace