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

C#中如何直接执行字符串形式的MongoDB原生查询语句?

如何在C#中执行字符串形式的MongoDB查询语句

可以实现,C#官方MongoDB驱动支持对应操作,具体实现方案如下:


前置依赖

首先安装NuGet官方驱动包:MongoDB.Driver


方案1:直接执行完整Mongo Shell风格查询字符串

如果需要直接执行类似db.getCollection("somecollection").find({})的完整Shell格式字符串,可以通过构造JS执行命令实现,代码示例如下:

using MongoDB.Bson;
using MongoDB.Driver;

// 初始化Mongo连接
var client = new MongoClient("mongodb://你的MongoDB连接串");
var db = client.GetDatabase("你的目标数据库名称");

// 你的字符串形式查询语句
string query = "db.getCollection(\"somename\").find({})";

// 构造执行命令
var executeCommand = new BsonDocumentCommand<BsonDocument>(new BsonDocument
{
    { "eval", query },
    { "nolock", true }
});

// 执行查询获取结果
var result = db.RunCommand(executeCommand);

注意:MongoDB 3.0及以上版本默认禁用eval命令,该方案存在JS注入安全风险,仅推荐测试环境、内部可控场景下使用,不建议生产环境使用。


方案2:生产环境推荐的动态查询方案

如果你的需求只是动态传入查询过滤条件,不需要执行完整的Shell语句,更推荐将查询条件转为JSON字符串后解析为Bson对象执行,无注入风险且性能更优,代码示例如下:

using MongoDB.Bson;
using MongoDB.Driver;

// 初始化Mongo连接
var client = new MongoClient("mongodb://你的MongoDB连接串");
var db = client.GetDatabase("你的目标数据库名称");
var collection = db.GetCollection<BsonDocument>("somename");

// 字符串形式的查询过滤条件
string filterJson = "{\"age\": { $gt: 18 }, \"city\": \"北京\"}";
var filter = BsonDocument.Parse(filterJson);

// 执行查询
var result = collection.Find(filter).ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:09:05