进入MongoDB中文手册(4.2版本)目录
本章节使用以下Java同步驱动程序方法:
- com.mongodb.client.MongoCollection.deleteMany;
- com.mongodb.client.MongoCollection.deleteOne。
本章节的示例使用inventory集合。要填充inventory集合,请运行以下命令:
collection.insertMany(asList(
Document.parse("{ item: 'journal', qty: 25, size: { h: 14, w: 21, uom: 'cm' }, status: 'A' }"),
Document.parse("{ item: 'notebook', qty: 50, size: { h: 8.5, w: 11, uom: 'in' }, status: 'A' }"),
Document.parse("{ item: 'paper', qty: 100, size: { h: 8.5, w: 11, uom: 'in' }, status: 'D' }"),
Document.parse("{ item: 'planner', qty: 75, size: { h: 22.85, w: 30, uom: 'cm' }, status: 'D' }"),
Document.parse("{ item: 'postcard', qty: 45, size: { h: 10, w: 15.25, uom: 'cm' }, status: 'A' }")
));
1 删除所有文档
要删除集合中的所有文档,请将空的 org.bson.Document对象作为过滤器传递给 com.mongodb.client.MongoCollection.deleteMany方法。
以下示例删除inventory集合中所有文档:
collection.deleteMany(new Document());
com.mongodb.client.MongoCollection.deleteMany方法返回有操作的状态的com.mongodb.client.result.DeleteResult 实例。
2 删除所有符合条件的文档
您可以指定条件或过滤器来标识要删除的文档。该过滤器使用和读操作相同的语法。
要指定相等条件,请使用com.mongodb.client.model.Filters.eq_方法创建查询过滤器文档:
and(eq( <field1>, <value1>), eq( <field2>, <value2>) ...)
除了相等条件外,MongoDB还提供各种查询运算符来指定过滤条件。使用 com.mongodb.client.model.Filters帮助器方法可以简化过滤器文档的创建。例如:
and(gte(<field1>, <value1>), lt(<field2>, <value2>), eq(<field3>, <value3>))
要删除所有符合删除条件的文档,请将过滤器参数传递给 com.mongodb.client.MongoCollection.deleteMany方法。
下面的示例从inventory集合中删除status字段等于"A"的所有文档:
collection.deleteMany(eq("status", "A"));
com.mongodb.client.MongoCollection.deleteMany方法返回有操作的状态的com.mongodb.client.result.DeleteResult 实例。
3 仅删除一个符合条件的文档
最多删除一个与指定过滤器匹配的文档(即使多个文档可能与指定过滤器匹配),请使用com.mongodb.client.MongoCollection.deleteOne方法。
下面的示例删除status为 "D"的第一个文档:
collection.deleteOne(eq("status", "D"));
4 删除行为
4.1 索引
即使从集合中删除所有文档,删除操作也不会删除索引。
4.2 原子性
MongoDB中的所有写操作都是单个文档级别的原子操作。有关MongoDB和原子性的更多信息,请参见原子性和事务。
4.3 写确认
对于写策略,您可以指定MongoDB中写入操作请求的确认级别。有关详细信息,请参见“ 写策略(Write Concern)”。
也可以看看: