sql >> Databáze >  >> NoSQL >> MongoDB

problém s otevřeným připojením mongodb

MongoClient má vnitřní fond připojení. Lze konfigurovat maximální počet připojení (výchozí je 100). Můžete to nastavit pomocí MongoClientOptions takhle:

MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .build();

A pak tyto možnosti dejte MongoClientovi (zkontrolováno v Mongo Java API v2.11.1). Připojení ve fondu jsou udržována otevřená (otevření a uzavření připojení je obvykle nákladná operace), takže je lze později znovu použít.

Také bych refaktoroval váš MongoDB klient singleton pomocí enum například abyste se vyhnuli umístění synchronized na této metodě.

Zde je náčrt toho, co mám na mysli:

public enum MongoDB {
    INSTANCE;

    private static final String MONGO_DB_HOST = "some.mongohost.com";
    private Mongo mongo;
    private DB someDB;

    MongoDB() {

        MongoClientOptions options = MongoClientOptions.builder()
                .connectionsPerHost(100)
                .autoConnectRetry(true)
                .readPreference(ReadPreference.secondaryPreferred())
                .build();

        try {
            mongo = new MongoClient(MONGO_DB_HOST, options);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }

        someDB = mongo.getDB("someDB");
         //authenticate if needed
         //boolean auth = someDB.authenticate("username", "password".toCharArray());
         //if(!auth){
         //     System.out.println("Error Connecting To DB");
         //}        
    }

    public DB getSomeDB() {
        return someDB;
    }

    //call it on your shutdown hook for example 
    public void close(){
        mongo.close();
    }
}

Poté můžete přistupovat ke své databázi pomocí

MongoDB.INSTANCE.getSomeDB().getCollection("someCollection").count();



  1. MongoDB nemůže spustit server:Výchozí modul úložiště 'wiredTiger' není k dispozici s tímto sestavením mongoda

  2. Jak aktualizovat hodnotu konkrétního vloženého dokumentu v poli konkrétního dokumentu v MongoDB?

  3. mongodb odmítá připojení v pythonu

  4. Jak automaticky zabít pomalé dotazy MongoDB?