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

MongoDB-Dấu chấm thoát '.' trong khóa bản đồ]

Khi sử dụng Spring Data MongoDB, bạn nhận được một phiên bản của:org.springframework.data.mongodb.core.convert.MappingMongoConvertermapKeyDotReplacement được đặt thành null theo mặc định - đó là lý do tại sao bạn nhận được một ngoại lệ.

Bạn cần tạo phiên bản org.springframework.data.mongodb.core.convert.MappingMongoConverter của riêng mình. hoặc chỉ sửa đổi phiên bản hiện có bằng cách sử dụng phương thức trình thiết lập trình cung cấp của nó:

/**
 * Configure the characters dots potentially contained in a {@link Map} shall be replaced with. By default we don't do
 * any translation but rather reject a {@link Map} with keys containing dots causing the conversion for the entire
 * object to fail. If further customization of the translation is needed, have a look at
 * {@link #potentiallyEscapeMapKey(String)} as well as {@link #potentiallyUnescapeMapKey(String)}.
 * 
 * @param mapKeyDotReplacement the mapKeyDotReplacement to set
 */
public void setMapKeyDotReplacement(String mapKeyDotReplacement) {
    this.mapKeyDotReplacement = mapKeyDotReplacement;
}

Trong MongoDB, dấu chấm luôn được coi là một ký tự đặc biệt nên việc tránh nó rất có thể sẽ giúp bạn đỡ đau đầu hơn trong tương lai.

CHỈNH SỬA:Để ghi đè MappingMongoConverter mặc định thêm khai báo bean sau:

  @Bean
  public MappingMongoConverter mongoConverter(MongoDbFactory mongoFactory) throws Exception {
    DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoFactory);
    MappingMongoConverter mongoConverter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
    mongoConverter.setMapKeyDotReplacement(".");

    return mongoConverter;
  }


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Không thể khởi động MongoDB. LỖI:addr đã được sử dụng

  2. Truy vấn MongoDB trả về mảng trống

  3. LỖI Mongodb:quy trình con không thành công, đã thoát với lỗi số 51

  4. Làm thế nào để tạo lược đồ mongoose động?

  5. Meteor:làm cách nào để trả về dữ liệu từ các trường trong một đối tượng cụ thể?