sql >> Databasteknik >  >> NoSQL >> MongoDB

Hantera Mongodb-anslutningar i Java som objektorienterad

I applikationen, en enda MongoClient objekt med ett nödvändigt antal anslutningar, med anslutningspooling , kommer att fungera i det här fallet. Standardvärdet för anslutningspoolen på 100 , och kan ändras (eller konfigureras) efter behov.

Mongo-klientobjektet kan skapas i början av applikationen och stängs endast när applikationen stängs. Detta sparar resurserna relaterade till att skapa en anslutning med mongo-klientobjekten i varje samlingsåtkomstklass.

Samma mongo-klientobjekt kan användas i hela applikationen. En singel klass (som upprätthåller en instans av mongo-klientobjektet) kan nås av vilket annat objekt som helst i applikationen som behöver en anslutning till MongoDB-databasservern.

Vad är anslutningspoolning?

Exempelkod:

/*
 * Manages the MongoClient object and its settings like host, port, connection pool, etc.
 */
public class DBAccess {

  private static MongoClient mongoClient;
  private static DBAccess dbAccess;

  // MongoClient with default settings
  // NOTE: the code will have only one of the constructors
  //private DBAccess() {
  //    final String connectionString = "mongodb://localhost:27017";
  //    this.mongoClient = MongoClients.create(connectionString);
  //}

  // MongoClient with custom settings.
  // Private constructor, so that the class can be instantiated outside this class.
  // NOTE: the code will have only one of the constructors
  private DBAccess() {

      MongoClientSettings settings =
          MongoClientSettings.builder()
              .applyToConnectionPoolSettings(builder ->
                   builder.maxSize(40).minSize(10))
             .applyToClusterSettings(builder ->
                   builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))))
            .build();

      mongoClient = MongoClients.create(settings);
  }

  public static MongoClient getConnection() {

      if (dbAccess == null) {
           dbAccess = new DBAccess();   
      }

      return mongoClient;
  }

  public static void closeDatabase() {
      mongoClient.close();
  }
}

/*
 * Class manages a collection.
 */
public class CollectionOneAccess {

  public static String COLLECTION_ONE = "collection_one";
  private MongoCollection<Document> collection;

  public CollectionOneAccess(MongoDatabase db) {    
      collection = db.getCollection(COLLECTION_ONE);
  }

  public void printOneDocument() {
      Document myDoc = collection.find().first();
      System.out.println(myDoc.toJson());
  }

  // other CRUD operations ...

}


// Usage of DBAcess and CollectionOneAccess classes:

private static final String APP_DATABASE = "abc_db";

public static void main(String [] args) {
    MongoDatabase database = DBAccess.getConnection().getDatabase(APP_DATABASE);
    CollectionOneAccess one = new CollectionOneAccess(database);
    one.printOneDocument();
    // ...
}

Mongo Client

MongoClient objekt används för att ansluta till MongoDB-servern, få tillgång till en databas med hjälp av getDatebase() metod och arbete med samlingar.

com.mongodb.client.MongoClient gränssnitt:

Från MongoDB Java-dokumentationen :

MongoClient-instansen representerar en pool av anslutningar till databasen; du behöver bara en instans av klass MongoClient även med flera trådar.

Följande kod skapar ett MongoDB-klientanslutningsobjekt med standardinställningar, som värd ("localhost") och port (27017 ), anslutningspoolning, etc., och ansluter till en MongoDB-instans och får tillgång till testDB databas.

MongoClient mongoClient = MongoClients.create();
MongoDatabase database = mongoClient.getDatabase("testDB");

Mongo Client Settings:

Du kan uttryckligen ange andra inställningar med MongoClientSettings för att kontrollera beteendet hos en MongoClient .

MongoClient mongoClient = MongoClients.create(MongoClientSettings settings)

ConnectionPoolSettings objekt specificerar alla inställningar som hänför sig till poolen av anslutningar till en MongoDB-server. Applikationen skapar denna anslutningspool när klientobjektet skapas. ConnectionPoolSettings.Builder är en byggare för ConnectionPoolSettings , har metoder för att specificera anslutningspoolens egenskaper. T.ex. maxSize​(int maxSize) :Det maximala antalet tillåtna anslutningar (standard är 100 ). Andra metoder inkluderar minSize , maxConnectionIdleTime osv.

Kod för att instansiera en MongoClient med anslutningspoolinställningar:

MongoClientSettings settings = MongoClientSettings.builder()
                                   .applyToConnectionPoolSettings(builder -> 
                                       builder.maxSize(20))
                                   .build();
MongoClient mongoClient = MongoClients.create(settings);
// ...
// Verify the connection pool settings 
System.out.println("Pool size: " + 
    settings.getConnectionPoolSettings().getMaxSize());


  1. PHP MongoDB karta minska db påstående misslyckande

  2. Räkna antalet instanser av sträng i ett fält över dokument grupperade på ett annat fält i MongoDB?

  3. mongoose ta bort tomma föremål eller arrayer

  4. MongoDB 2.2 - Uppdatering av Array Nested Document