Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

preferencia de lectura

Para elegir de qué nodo de un set de réplicas leer, puede utilizar el driver Java Reactive Streams para configurar su preferencia de lectura. Además, puedes controlar la coherencia y las propiedades de aislamiento de los datos leídos de conjuntos de réplicas y clústeres fragmentados configurando niveles de consistencia de lectura. En esta guía, puedes aprender a usar el MongoDB Java Reactive Streams Driver para configurar las preferencias de lectura y los niveles de consistencia de lectura.

Puedes configurar la preferencia de lectura y el nivel de consistencia de lectura en los siguientes niveles:

  • Para su implementación de MongoDB

  • Para tu base de datos

  • Para tu colección

Puedes configurar la preferencia de lectura a nivel de implementación de las siguientes formas:

  • Al crear un MongoClientSettings instancia, como se muestra en el siguiente código:

    MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder()
    .applyConnectionString(new ConnectionString("mongodb://host1,host2"))
    .readPreference(ReadPreference.secondary())
    .build());
  • Creando una instancia ConnectionString, como se muestra en el siguiente código:

    MongoClient mongoClient =
    MongoClients.create("mongodb://host1:27017,host2:27017/?readPreference=secondary");

Puede configurar la preferencia de lectura en el nivel de la base de datos o de la colección de las siguientes maneras:

  • En un MongoDatabase utilizando el método withReadPreference(), como se muestra en el siguiente código:

    MongoDatabase database = mongoClient.getDatabase("test")
    .withReadPreference(ReadPreference.secondary());
  • En un MongoCollection utilizando el método withReadPreference(), como se muestra en el siguiente código:

    MongoCollection<Document> collection = database.getCollection("restaurants")
    .withReadPreference(ReadPreference.secondary());

MongoDatabase Las instancias MongoCollection y withReadPreference() son inmutables. Llamar a en una instancia MongoDatabase o MongoCollection existente devuelve una nueva instancia y no afecta a la instancia en la que se llama el método.

En el siguiente ejemplo, la instancia collectionWithReadPref tiene la preferencia de lectura de primaryPreferred mientras que la preferencia de lectura de collection no se ve afectada:

MongoCollection<Document> collectionWithReadPref = collection.withReadPreference(ReadPreference.primaryPreferred());

Puedes configurar el nivel de consistencia de lectura a nivel de implementación de las siguientes maneras:

  • Creando una instancia MongoClientSettings, como se muestra en el siguiente código:

    MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder()
    .applyConnectionString(new ConnectionString("mongodb://host1,host2"))
    .readConcern(ReadConcern.MAJORITY)
    .build());
  • Creando una instancia ConnectionString, como se muestra en el siguiente código:

    MongoClient mongoClient =
    MongoClients.create("mongodb://host1:27017,host2:27017/?readConcernLevel=majority");

Puede configurar la preocupación de lectura a nivel de base de datos o colección de las siguientes maneras:

  • En un MongoDatabase utilizando el método withReadConcern(), como se muestra en el siguiente código:

    MongoDatabase database = mongoClient.getDatabase("test")
    .withReadConcern(ReadConcern.MAJORITY);
  • En un MongoCollection utilizando el método withReadConcern(), como se muestra en el siguiente código:

    MongoCollection<Document> collection = database.getCollection("restaurants")
    .withReadConcern(ReadConcern.MAJORITY);

MongoDatabase Las instancias MongoCollection y withReadConcern() son inmutables. Llamar a en una instancia MongoDatabase o MongoCollection existente devuelve una nueva instancia y no afecta a la instancia en la que se llama el método.

En el siguiente ejemplo, la instancia collWithReadConcern tiene una preocupación de lectura AVAILABLE mientras que la preocupación de lectura de collection no se ve afectada:

MongoCollection<Document> collWithReadConcern =
collection.withReadConcern(ReadConcern.AVAILABLE);

Puede crear instancias MongoClientSettings, MongoDatabase o MongoCollection para incluir combinaciones de inquietudes de lectura, preferencias de lectura e inquietudes de escritura.

Por ejemplo, el siguiente código configura los tres a nivel de colección:

collection = database.getCollection("restaurants")
.withReadPreference(ReadPreference.primary())
.withReadConcern(ReadConcern.MAJORITY)
.withWriteConcern(WriteConcern.MAJORITY);

Para obtener más información sobre la preferencia de lectura, consulte la Guía de preferencia de lectura en el manual de MongoDB Server. Para obtener más información sobre el nivel de consistencia de lectura, consulta la Guía de nivel de consistencia de lectura en el manual del servidor de MongoDB.

Volver

Cursores de datos