MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Мултинаемност, базирана на колекция с Spring Data MongoDB

Намерен начин за пресъздаване на индексите за даден клиент:

String tenantName = ...;

MongoMappingContext mappingContext = (MongoMappingContext) mongoTemplate.getConverter().getMappingContext();
MongoPersistentEntityIndexResolver resolver = new MongoPersistentEntityIndexResolver(mappingContext);

for (BasicMongoPersistentEntity entity : mappingContext.getPersistentEntities()) {
    if (entity.findAnnotation(Document.class) == null) {
        // Keep only collection roots
        continue;
    }

    String collectionName = entity.getCollection();
    if (!collectionName.startsWith(tenantName)) {
        // Keep only dynamic entities
        continue;
    }

    IndexOperations indexOperations = mongoTemplate.indexOps(collectionName);
    for (MongoPersistentEntityIndexResolver.IndexDefinitionHolder holder : resolver.resolveIndexForEntity(entity)) {
        indexOperations.ensureIndex(holder.getIndexDefinition());
    }
}

Отне ми известно време, за да разбера това. Надявам се това да помогне. Подобренията са добре дошли.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongoose find all не изпраща обратно повикване

  2. mongodb не стартира на ubuntu 18.04

  3. Метод MongoDB Date().

  4. Защо координатите на многоъгълни GeoJSON обекти се съхраняват в масив от масив?

  5. Spring data и mongodb - просто връщане назад с пружина в @Transactional