C#Mongo DeleteMany-不使用类

时间:2019-12-03 15:38:49

标签: c# mongodb

我在MongoDB中有一个普通的(不是GridFS)集合,我需要访问和删除一些文档。我想/不需要使用类就可以做到这一点。

昨天/今天尝试了一些操作,并在网络上进行了大量搜索。

无法弄清楚为什么deletemany对我不起作用。我做了很多尝试,删除了我尝试过的所有代码,并希望重新开始。

是否有一些人可以分享链接的例子?还是这里有一些代码示例?

谢谢 罗素

3 个答案:

答案 0 :(得分:0)

这是我用来删除收藏夹中许多内容的方法。

// Methods used in various places
internal static IMongoCollection<T> GetCollection<T>(string collectionName)
{
  return db.GetCollection<T>(collectionName);
}

// Your mongo entity CollectionTypeEntit
public class CollectionTypeEntity
{
    public const string COLLECTION_NAME = @"collectionName";

    [BsonId]
    public ObjectId ID { get; set; }

    public bool propertyValue{ get; set; }

}

// Used in program to delete all records that match condition
GetCollection<CollectionTypeEntity>("CollectionName").DeleteMany(_ => _.propertyValue == true);

注意:db是IMongoDatabase的实例

答案 1 :(得分:0)

您可以构造一个BsonDocument并将其传递给驱动程序的Delete方法,通常您会在其中传递FilterDefinition

要从集合中删除所有文档,请使用空白的BsonDocument

await collection.DeleteManyAsync(new BsonDocument());

如果要指定查询,则可以手动创建BsonDocument:

var bson = new BsonDocument();
using (var w = new BsonDocumentWriter(bson))
{
    w.WriteStartDocument();
    w.WriteName("fieldName");
    w.WriteInt32(42);
    w.WriteEndDocument();
}
await collection.DeleteManyAsync(bson);

在这种情况下,您甚至可以通过提供object作为通用参数来创建集合:

var collection = db.GetCollection<object>("Foo");

答案 2 :(得分:0)

以下是最方便的方法。它使用隐式运算符将json字符串转换为filterdefinition。所以不需要上课。

5