MongoDB-删除文档

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

  • IMongoCollection.DeleteMany()
  • IMongoCollection.DeleteOne()

运行以下代码,填充 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.Filter.Empty,可以删除集合中全部文档:

var filter = Builders.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.Filter.Eq(, );

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

var builder = Builders.Filter;
builder.And(builder.Eq(, ), builder.Lt(, ));

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

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

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

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

删除匹配条件的一个文档

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

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

var filter = Builders.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() 删除符合条件的单一文档.

更多的方法

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

  • db.collection.findOneAndDelete().

    findOneAndDelete() 提供了排序选项.该选项允许删除排序后的首个文档

  • db.collection.findAndModify().

    db.collection.findAndModify() 提供了排序选项,该选项允许删除排序后的首个文档

  • db.collection.bulkWrite().

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

 

你可能感兴趣的:(软件开发,mongodb)