You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中使用MongoDB Driver实现find查询多条件过滤

问题原因

你编写的C#代码核心存在两处逻辑错误:

  • 不等查询构造错误:Builders.Filter.Eq是全等判断方法,嵌套$ne操作符后生成的查询结构为{status: {$eq: {$ne: "APPROVED"}}},和预期逻辑完全不符
  • 正则查询构造+参数错误:用Eq嵌套$regex生成的查询结构为{storyID: {$eq: {$regex: "bbjfnfn-*"}}},不符合查询要求,同时你代码里的正则字符串多写了fn后缀,和原始查询的bbjfn-*不一致

修正方案

你可以直接使用驱动内置的Filter方法实现需求,修正后的代码如下:

IMongoDatabase database = MongoClient.GetDatabase(Program.Settings.MongoDB.Database);
IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("comments");

var filter = Builders<BsonDocument>.Filter.Ne("status", "APPROVED") & 
             Builders<BsonDocument>.Filter.Regex("storyID", new BsonRegularExpression("bbjfn-*"));

var results = await collection.FindAsync(filter);

如果你习惯原生MongoDB查询的写法,也可以直接用BsonDocument构造Filter:

var filter = new BsonDocument
{
    { "status", new BsonDocument("$ne", "APPROVED") },
    { "storyID", new BsonDocument("$regex", "bbjfn-*") }
};

内容的提问来源于stack exchange,提问作者NestedCodeblocksFTW

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:15:03