【问题标题】:spring-data-mongodb using the fieldName instead of _idspring-data-mongodb 使用 fieldName 而不是 _id
【发布时间】:2019-10-08 12:46:41
【问题描述】:

我有一个属性为

的 Pojo
    Class A{ 
        @Id
        @Field("item_id")
        private String itemId;
    }

当我尝试根据 itemId 更新 MongoDB 集合中的文档时,它运行良好,并且能够从 mongo ops 日志中看到查询已转换为“itemIds 中的_id”

Query query = new Query(Criteria.where("itemId").in(itemIds));
Update update = new Update();
update.set("field2", "abd");
mongoTemplate.updateMulti(query, update, A.class)

当我升级到 spring-data-mongodb-2.1.5.RELEASE 时,我在 mongo 日志中看到的查询是“item_id in itemIds”。由于 item_id 不是字段并且集合中没有该字段的索引,因此查询需要很长时间才能完成。

任何帮助理解为什么 spring-data 库在旧版本中将查询构建为 _id 并在新版本中使用该字段?

【问题讨论】:

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


    【解决方案1】:

    在 Spring 文档 (https://docs.spring.io/spring-data/mongodb/docs/1.3.3.RELEASE/reference/html/mapping-chapter.html) 上搜索 2 分钟后:

    以下概述了将映射到“_id”文档字段的字段:

    • 使用@Id (org.springframework.data.annotation.Id) 注释的字段将映射到“_id”字段。
    • 没有注释但命名为 id 的字段将映射到“_id”字段。

    你试过了吗?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 2017-01-01
    • 1970-01-01
    • 2016-06-29
    相关资源
    最近更新 更多