写入关注点
概述
在本指南中,您可以了解如何使用Java响应式流驱动程序来指定写入关注点。写入关注点描述了MongoDB对写入操作请求的确认级别。
您可以在以下级别配置写入关注点
针对您的MongoDB部署
针对您的数据库
针对您的集合
在部署级别配置写入关注点
您可以通过以下方式在部署级别配置写入关注点
通过创建一个
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");
在数据库或集合级别配置写入关注点
您可以通过以下方式在数据库或集合级别配置写入关注点
在
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 服务器手册中。