MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Ngăn dữ liệu mùa xuân để Mongo chuyển đổi id thành ObjectId

Cuối cùng tôi đã tìm thấy một giải pháp cho điều này. Có lẽ không phải là lựa chọn tốt nhất, nhưng hiệu quả.

Những gì tôi đã làm là xóa trình chuyển đổi khỏi String thành ObjectId MongoTemplate đó sử dụng thông qua QueryMapper . Bằng cách này, tôi đã tạo trình chuyển đổi Mongo sau:

public class CustomMongoConverter extends MappingMongoConverter {
    public CustomMongoConverter(MongoDbFactory mongoDbFactory, MappingContext<? extends MongoPersistentEntity<?>, MongoPersistentProperty> mappingContext) {
        super(mongoDbFactory, mappingContext);
        conversionService.addConverter(new Converter<String, ObjectId>() {
            @Override
            public ObjectId convert(String source) {
                throw new RuntimeException();
            }
        });
    }
}

Và sau đó, tôi đã chuyển việc triển khai trình chuyển đổi đó sang MongoTemplate :

<bean id="mongoConverter" class="com.abcompany.model.repositories.utils.CustomMongoConverter">
    <constructor-arg ref="mongoDbFactory"/>
    <constructor-arg>
        <bean class="org.springframework.data.mongodb.core.mapping.MongoMappingContext"/>
    </constructor-arg>
</bean>

<bean class="org.springframework.data.mongodb.core.MongoTemplate" id="mongoTemplate">
    <constructor-arg ref="mongoDbFactory"/>
    <constructor-arg ref="mongoConverter"/>
</bean>

Bằng cách này, khi cố gắng chuyển đổi từ String sang ObjectId, nó sẽ ném ra một ngoại lệ và nó không thực hiện điều đó. Xin lưu ý rằng bạn có thể chỉ cần xóa trình chuyển đổi khỏi conversionService .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bộ lọc Mongo mảng mảng mảng

  2. Nâng cấp MongoTemplate - cách dễ dàng để thực hiện Cập nhật từ pojo (người dùng nào đã chỉnh sửa)?

  3. Tìm kiếm mongodb dữ liệu mùa xuân cho ngày ISO

  4. Ký tự đại diện MongoDB trong khóa của một truy vấn

  5. Cập nhật một mảng trong MongoDB bằng trình điều khiển Java