首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#中的多个MongoDb过滤器

C#中的多个MongoDb过滤器
EN

Stack Overflow用户
提问于 2020-03-17 19:34:56
回答 1查看 230关注 0票数 1

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

代码语言:javascript
运行
复制
        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();
        }

但是它抛出了错误:

代码语言:javascript
运行
复制
System.InvalidOperationException: 'Sequence contains no elements'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-17 21:15:05

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

最好改用Builders<BsonDocument>.Filter.Empty

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60721582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档