MongoDB-删除文档

该页使用了以下MongoDB C# Driver 方法:

运行以下代码,填充 inventory 集合 :

var documents = new[]
{
    new BsonDocument
    {
        { "item", "journal" },
        { "qty", 25 },
        { "size", new BsonDocument { { "h", 14 }, { "w", 21 }, { "uom", "cm" } } },
        { "status", "A" }
    },
    new BsonDocument
    {
        { "item", "notebook" },
        { "qty", 50 },
        { "size", new BsonDocument { { "h", 8.5 }, { "w", 11 }, { "uom", "in" } } },
        { "status", "P" }
    },
    new BsonDocument
    {
        { "item", "paper" },
        { "qty", 100 },
        { "size", new BsonDocument { { "h", 8.5 }, { "w", 11 }, { "uom", "in" } } },
        { "status", "D" }
    },
    new BsonDocument
    {
        { "item", "planner" },
        { "qty", 75 },
        { "size", new BsonDocument { { "h", 22.85 }, { "w", 30 }, { "uom", "cm" } } },
        { "status", "D" }
    },
    new BsonDocument
    {
        { "item", "postcard" },
        { "qty", 45 },
        { "size", new BsonDocument { { "h", 10 }, { "w", 15.25 }, { "uom", "cm" } } },
        { "status", "A" }
    }
};
collection.InsertMany(documents);

删除全部文档

为 IMongoCollection.DeleteMany()方法提供一个empty filter Builders<BsonDocument>.Filter.Empty,可以删除集合中全部文档:

var filter = Builders<BsonDocument>.Filter.Empty;
var result = collection.DeleteMany(filter);

Upon successful execution, the  method returns an instance of whose DeletedCount property contains the number of documents that matched the filter.

在成功执行后,IMongoCollection.DeleteMany() 方法返回一个DeleteResult实例,DeletedCount 属性包含匹配筛选器的匹配的文档数量。

通过匹配的条件删除所有文档

你可以指定规则或筛选器,来标识要删除的文档,筛选器语句与读操作相同。使用Eq 方法构建筛选器,用来指 

定相等条件:

Builders<BsonDocument>.Filter.Eq(<field>, <value>);

除了相同筛选器,MangoDB还提供各种查询运算符来指定筛选条件。使用FilterDefinitionBuilder方法创建筛选器文档。例如:

var builder = Builders<BsonDocument>.Filter;
builder.And(builder.Eq(<field1>, <value1>), builder.Lt(<field2>, <value2>));

传入一个filter 参数到IMongoCollection.DeleteMany() 方法,匹配删除规则来删除所有文档。

以下代码从inventory 集合中通过删除全部文档,匹配条件是 status 字段值等于“A”:

var filter = Builders<BsonDocument>.Filter.Eq("status", "A");
var result = collection.DeleteMany(filter);

当执行成功时,IMongoCollection.DeleteMany()方法会返回一个 DeleteResult实例,它的DeletedCount 属性包含筛选器匹配的文档数量:

删除匹配条件的一个文档

删除筛选器匹配的单一文档(即然可能匹配多个文档),可以使用IMongoCollection.DeleteOne().

以下示例为删除status等于“D”的第一个文档:

var filter = Builders<BsonDocument>.Filter.Eq("status", "D");
var result = collection.DeleteOne(filter);

删除行为

索引

删除操作不会删除索引,即使用删除集合中全部文档;

原子性

所有的单文档写入操作都是原子性的,更多信息,查看 Atomicity and Transactions.

写入确认

关于写入关注点,你可以指定MongoDB写操作的确认级别,更多细节,查看Write Concern.

删除方法

MongoDB提示以下删除集合中文档的方法:

db.collection.deleteOne()

删除集合中单一文档,即然查询条件匹配多个文档

New in version 3.2.

db.collection.deleteMany()

删除符合条件的文档.

New in version 3.2.

db.collection.remove()删除符合条件的单一文档.

更多的方法

以下方法可以删除集合中的文档:

关于更多的信息和示例,请查看个别的引用页;

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值