在MongoDB驱动程序中按布尔值==false过滤



在我的.NET Core应用程序中,我有带有类似道具的模型

{   
public ObjectId Id  { get; set; }
public bool IsDeleted { get; set; }
public string Name { get; set; }
}

并尝试进行查询:

var filter = Collection.Find(x => !x.IsDeleted);

我有这样的查询过滤器文档(filter.ToString()(:

{ "IsDeleted": { $ne: true } }

有没有办法像这样获得过滤器?

{ "IsDeleted": false }

因为一旦bool不可为空并且不被忽略它必须false
当然,我可以这样写它并且有效,但这有点奇怪:

Collection.Find(x => x.IsDeleted == false)

我尝试了[BsonRequired]属性,并在IsDeleted[BsonDefaultValue(false)]属性,但没有运气。

附言。我需要这个,因为它无法在 MongoDB 中按索引排序。例如,如果我们有复合索引{IsDeleted: 1, Name: 1}那么collection.find({ IsDeleted: false }).sort({ Name: 1 })将按索引排序,但collection.find({ IsDeleted: { $ne: true } }).sort({ Name: 1 })将在内存中排序(这很糟糕(

要解决排序问题,请使用:.Sort({IsDeleted:1, Name:1})

最新更新