MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Penyewaan multi berbasis koleksi di mongo data musim semi

Anda dapat memperluas MappingMongoEntityInformation untuk mengganti getCollectionName(). Operasi repositori memanggil getCollectionName() pada setiap operasi. Saya berasumsi tenantId akan menjadi ThreadLocal

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

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

Dan kelas yang diganti dengan konstruktor dihilangkan.

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

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

Kemudian buat repositori Anda:

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. Koleksi MongoDB runCommand dari PHP

  2. Kueri regex Node.js dan Mongoose di beberapa bidang

  3. Bagaimana saya bisa meningkatkan kinerja massal MongoDB?

  4. MongoDB Tidak cukup ruang kosong untuk file jurnal

  5. Mongoose TypeError:Pengguna bukan konstruktor