我在MongoDB中有一个普通的(不是GridFS)集合,我需要访问和删除一些文档。我想/不需要使用类就可以做到这一点。
昨天/今天尝试了一些操作,并在网络上进行了大量搜索。
无法弄清楚为什么deletemany对我不起作用。我做了很多尝试,删除了我尝试过的所有代码,并希望重新开始。
是否有一些人可以分享链接的例子?还是这里有一些代码示例?
谢谢 罗素
答案 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