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