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

Bộ sưu tập dựa trên nhiều hợp đồng thuê nhà trong dữ liệu mùa xuân mongo

Bạn có thể mở rộng MappingMongoEntityInformation để ghi đè getCollectionName (). Các hoạt động kho lưu trữ gọi getCollectionName () trên mỗi hoạt động. Tôi giả định rằng tenantId sẽ là một ThreadLocal

public class TenantThreadLocal extends ThreadLocal<String> {
    private final static TenantThreadLocal instance = new TenantThreadLocal();

    public static TenantThreadLocal instance() {
        return instance;
    }
}

Và lớp được ghi đè với các hàm tạo bị bỏ qua.

public class TenantMappingMongoEntityInformation<T, ID extends java.io.Serializable>  extends MappingMongoEntityInformation<T, ID> {

    @Override
    public String getCollectionName() {
        return TenantThreadLocal.instance().get() + super.getCollectionName();
    }
}

Sau đó, tạo kho lưu trữ của bạn:

MongoPersistentEntity<YourObject> persistentEntity = 
    (MongoPersistentEntity<YourObject>) 
    mongoOperations.getConverter()
    .getMappingContext()
    .getPersistentEntity(YourObject.class);

MongoEntityInformation<YourObject, ObjectId> mongoEntityInformation =
    new MappingMongoEntityInformation<YourObject, ObjectId>(persistentEntity);

CrudRepository<YourObject, ObjectId> repository =
    new SimpleMongoRepository<YourObject, ObjectId>(mongoEntityInformation, mongoOperations);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chèn hoặc cập nhật tài liệu con một cách an toàn trong MongoDB

  2. Sắp xếp MongoDB so với tổng hợp $ sort trên chỉ mục mảng

  3. MongoError ghi EPIPE ”trong Cài đặt Parse-Server

  4. Khung tổng hợp MongoDB - Nhóm theo năm

  5. Khi nào sử dụng Singleton vs Transient vs Request bằng Ninject và MongoDB