【问题标题】:Filter by boolean==false in MongoDB Driver在 MongoDB 驱动程序中按 boolean==false 过滤
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-08-27
      • 2021-09-01
      • 1970-01-01
      • 2016-03-13
      • 2018-04-08
      • 2016-11-16
      • 2021-11-03
      • 2017-02-26
      • 1970-01-01
      相关资源
      最近更新 更多