删除文档


进入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)”。
也可以看看:

进入MongoDB中文手册(4.2版本)目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值