MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wielu najemców opartych na kolekcji w wiosennym mongo danych

Możesz rozszerzyć MappingMongoEntityInformation, aby przesłonić metodę getCollectionName(). Operacje repozytorium wywołują getCollectionName() dla każdej operacji. Zakładam, że tenantId byłby ThreadLocal

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

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

I nadpisana klasa z pominiętymi konstruktorami.

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

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

Następnie utwórz swoje repozytorium:

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. MongoDB:Sortuj według istniejących pól, a następnie alfabetycznie

  2. Jak uzyskać status slave mongodb za pomocą nodejs?

  3. MongoDB $rozmiar

  4. Zwróć niektóre pola za pomocą .populate() z Mongoose

  5. MongoDB wysyła zapytania do wielu kolekcji jednocześnie