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

Wielodostępność oparta na kolekcji z Spring Data MongoDB

Znalazłem sposób na odtworzenie indeksów dla danego najemcy:

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());
    }
}

Zajęło mi trochę czasu, aby to rozgryźć. Mam nadzieję, że to pomoże. Mile widziane ulepszenia.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB — nie można użyć .explain(), aby uzyskać informacje o zapytaniu w kodzie C#?

  2. Nieprzechwycony błąd:Gdy opcja modyfikatora ma wartość true, obiekt walidacji musi mieć co najmniej jeden operator

  3. Kod błędu zestawu replik 76

  4. Nie można połączyć się z mongodb errno:61 Połączenie odrzucone

  5. junit przypadki testowe przy użyciu osadzania mongodb de.flapdoodle.embed.mongo