sql >> データベース >  >> NoSQL >> MongoDB

SpringDataMongoDBを使用したコレクションベースのマルチテナンシー

    特定のテナントのインデックスを再作成する方法を見つけました:

    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. mongodbを使用したドル値のフィルタリング

    2. Squeeze用のMongoDBPowerPCのインストール

    3. MongoシェルでのNumberLong演算

    4. PHPスクリプトからRedisに接続しようとしたときに許可が拒否されたトラブルシューティング