【问题标题】:Aggregation works unexpectedly after spring-data-mongo-db library updatespring-data-mongo-db 库更新后聚合工作异常
【发布时间】:2021-07-22 17:28:18
【问题描述】:

今天我将 Spring Boot 从 2.2.2.RELEASE 版本更新到 2.5.2。之后聚合开始表现不同。这是一个示例查询(使用 kotlin 语言):

 val aggregation = Aggregation.newAggregation(
            Aggregation.match(Criteria.where("_id").isEqualTo(ObjectId("6faa215a23cfcf1524cc4a4b"))),
            Aggregation.project().andExclude("_id").andExpression("\$\$ROOT").`as`("user"),
            Aggregation.lookup("user", "user._id", "_id", "sameUser")
        )

        return reactiveMongoTemplate.aggregate(aggregation, "user", UserTestAgggr::class.java)

data class UserTestAgggrUserTestAgggr(
        val user: User,
        val sameUser: User
    )

对于 2.2.2.RELEASE 版本,此代码有效。但是在 2.5.2 版本中,API 要求 sameUser 参数是一个列表(否则它会引发异常)。

我想避免修改我的查询或对象(因为我有太多这些)。 所以我想我的问题是:有没有办法让最新的 API 在不降级的情况下表现得像以前一样?

【问题讨论】:

    标签: mongodb spring-boot spring-data-mongodb spring-data-mongodb-reactive


    【解决方案1】:

    所以我的答案是创建自己的 MappingMongoConverter,这是一场噩梦,因为它必须扩展 MappingMongoConverter(一些 spring 类直接注入 MappingMongoConverter 而不是使用 MongoConverter 接口)。也必须用 java 编写它(所以我可以依赖 MappingMongoConverter 原始实现)。一点都不好玩,但为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-02
      • 2017-05-02
      • 2017-05-11
      • 2019-11-27
      • 2015-05-26
      • 2017-03-03
      • 1970-01-01
      • 2017-07-18
      相关资源
      最近更新 更多