【问题标题】:Multiple MongoDb filters in C#C# 中的多个 MongoDb 过滤器
【发布时间】:2020-06-28 11:41:16
【问题描述】:

为了在 C# 中处理多个 MongoDb 过滤器,我编写了以下方法;

        public string MultipleFilters(string collectionName, Dictionary<string, string> dictFilters)
        { 
            var filter = Builders<BsonDocument>.Filter.Eq("", "");

            foreach (KeyValuePair<string, string> entry in dictFilters)
            {
                filter = filter & Builders<BsonDocument>.Filter.Eq(entry.Key, entry.Value);
            }

            var collection = this.database.GetCollection<BsonDocument>(collectionName);           
            var document = collection.Find(filter).First();

            return document.ToJson();
        }

但它会抛出错误:

System.InvalidOperationException: 'Sequence contains no elements'

【问题讨论】:

    标签: c# mongodb mongodb-.net-driver mongodb.driver


    【解决方案1】:

    Builders&lt;BsonDocument&gt;.Filter.Eq("", "") 是一个有效的 MongoDB 过滤器,它尝试查找具有空键和空值 (example) 的文档,

    最好改用Builders&lt;BsonDocument&gt;.Filter.Empty

    此外,您在 .Find() 方法之后运行 .First(),因此您假设始终至少有一个值。如果您希望在出现问题时抛出Sequence contains no elements,那很好,但是您可以尝试使用.FirstOrDefault() 更优雅地处理它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-06
      • 1970-01-01
      • 2015-07-23
      • 2022-01-03
      相关资源
      最近更新 更多