使用fieldName而不是_id的spring-data-mongodb

时间:2019-05-22 05:30:17

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

我有一个Pojo,属性为

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

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

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日志中看到的查询是“ itemIds中的item_id”。由于item_id不是字段,并且在集合中也没有该字段的索引,因此查询花了很长时间才能完成。

任何帮助您了解为何spring-data库在较旧版本中将查询构建为_id并在较新版本中使用该字段的原因?

1 个答案:

答案 0 :(得分: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'字段。
  •   

您已经尝试过吗?