【发布时间】:2020-01-16 21:43:15
【问题描述】:
在我的 .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)
我在IsDeleted 上尝试了[BsonRequired] 和[BsonDefaultValue(false)] 属性,但没有成功。
PS。我需要这个,因为它无法在 MongoDB 中按索引排序。例如,如果我们有复合索引{IsDeleted: 1, Name: 1},那么collection.find({ IsDeleted: false }).sort({ Name: 1 }) 将按索引排序,但collection.find({ IsDeleted: { $ne: true } }).sort({ Name: 1 }) 将在内存中排序(这很糟糕)
【问题讨论】:
标签: c# asp.net mongodb asp.net-core .net-core