0

我正在使用 mongo-java-driver-3.12.X 版本。我想更改已弃用的 API

DBCollection.remove(query, WriteConcern.UNACKNOWLEDGED);

MongoCollection.deleteMany(query)
  1. 有没有办法指定 WriteConcern?
  2. 如果未指定 WriteConcern,默认行为是什么?
4

1 回答 1

1

您可以在驱动程序文档中轻松找到此信息。

对于 3.12 版本,WriteConcern 可以设置为多个级别,如下所示。

蒙古客户:

MongoClientOptions options = MongoClientOptions.builder().writeConcern(WriteConcern.UNACKNOWLEDGED).build();
MongoClient mongoClient = new MongoClient(Arrays.asList(
        new ServerAddress("host1", 27017),
        new ServerAddress("host1", 27018)), options);

或使用连接字符串

MongoClient mongoClient = new MongoClient(new MongoClientURI("mongodb://host1:27017,host2:27017/?w=unacknowledged"));

Mongo数据库

MongoDatabase database = mongoClient.getDatabase("test").withWriteConcern(WriteConcern.UNACKNOWLEDGED);

MongoCollection

这是您感兴趣的案例

MongoCollection<Document> collection = database.getCollection("restaurants").withWriteConcern(WriteConcern.UNACKNOWLEDGED);
collection.deleteMany(query);

请记住,MongoCollection 和 MongoDatabase 是不可变的,因此调用 withWriteConcern 创建一个新实例并且对原始实例没有影响。

对于默认行为,您需要查看文档,因为它取决于您的 mongodb 版本。

于 2020-09-24T19:08:56.777 回答