写关注
Overview
在本指南中,您可以学习;了解如何使用Java Reactive Streams驾驶员来指定写关注(write concern)。 写关注描述了MongoDB为写入操作请求的确认级别。
您可以在以下级别配置写关注:
对于MongoDB 部署
对于您的数据库
供您集合
在部署级别配置写关注
您可以通过以下方式在部署级别配置写关注(write concern):
通过创建一个
MongoClientSettings
实例,如以下代码所示:MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .writeConcern(WriteConcern.MAJORITY) .build()); 通过创建
ConnectionString
实例,如以下代码所示:MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?w=majority");
在数据库或集合级别配置写关注
您可以通过以下方式在数据库或集合级别配置写关注(write concern):
在
MongoDatabase
中,使用withWriteConcern()
方法,如以下代码所示:MongoDatabase database = mongoClient.getDatabase("test").withWriteConcern(WriteConcern.MAJORITY); 在
MongoCollection
中,使用withWriteConcern()
方法,如以下代码所示:MongoCollection<Document> collection = database .getCollection("restaurants") .withWriteConcern(WriteConcern.MAJORITY);
MongoDatabase
和MongoCollection
实例是不可变的。 在现有MongoDatabase
或MongoCollection
实例上调用withWriteConcern()
会返回一个新实例,并且不会影响调用该方法的实例。
在以下示例中, collWithWriteConcern
实例的写关注为majority
,而collection
的读取偏好不受影响:
MongoCollection<Document> collWithWriteConcern = collection .withWriteConcern(WriteConcern.MAJORITY);
结合读关注、读取偏好和写关注
您可以构建MongoClientSettings
、 MongoDatabase
或MongoCollection
实例以包含读关注、读取偏好和写关注的组合。
例如,以下代码在集合级别设置所有三个:
Collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.primary()) .withReadConcern(ReadConcern.MAJORITY) .withWriteConcern(WriteConcern.MAJORITY);
更多信息
要学习;了解有关写入关注的更多信息,请参阅MongoDB Server手册中的写关注指南。