我正在使用 mongo-java-driver-3.12.X 版本。我想更改已弃用的 API
DBCollection.remove(query, WriteConcern.UNACKNOWLEDGED);
至
MongoCollection.deleteMany(query)
- 有没有办法指定 WriteConcern?
- 如果未指定 WriteConcern,默认行为是什么?
我正在使用 mongo-java-driver-3.12.X 版本。我想更改已弃用的 API
DBCollection.remove(query, WriteConcern.UNACKNOWLEDGED);
至
MongoCollection.deleteMany(query)
您可以在驱动程序文档中轻松找到此信息。
对于 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"));
MongoDatabase database = mongoClient.getDatabase("test").withWriteConcern(WriteConcern.UNACKNOWLEDGED);
这是您感兴趣的案例
MongoCollection<Document> collection = database.getCollection("restaurants").withWriteConcern(WriteConcern.UNACKNOWLEDGED);
collection.deleteMany(query);
请记住,MongoCollection 和 MongoDatabase 是不可变的,因此调用 withWriteConcern 创建一个新实例并且对原始实例没有影响。
对于默认行为,您需要查看文档,因为它取决于您的 mongodb 版本。