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

如何在.NET 6中使用MongoDB Driver运行Mongo命令JS脚本?

在.NET 6中通过MongoDB Driver运行Mongo JS脚本的可行方案

方法1:使用RunCommand执行eval命令

MongoDB支持通过eval命令执行JavaScript脚本,你可以通过.NET Driver的RunCommand方法调用它。注意MongoDB 3.0及以上版本默认禁用了JavaScript执行,需要先开启权限:

开启JavaScript执行权限

  • 启动mongod时添加参数:mongod --enableJavaScriptRuntime
  • 或者在MongoDB配置文件中设置:
    security:
      javascriptEnabled: true
    

.NET 6代码示例

using MongoDB.Driver;
using MongoDB.Bson;

var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("your-db-name");

// 要执行的JS脚本
var jsScript = @"
    function getTotalUsers() {
        return db.users.countDocuments();
    }
    return getTotalUsers();
";

// 构造eval命令
var command = new BsonDocument("eval", new BsonJavaScript(jsScript));

// 执行命令
var result = database.RunCommand<BsonDocument>(command);
Console.WriteLine("执行结果: " + result["retval"]);

方法2:排查RunCommand失效原因

如果你之前使用RunCommand未生效,大概率是以下问题:

  • 未开启JavaScript执行权限,导致命令被MongoDB拒绝
  • 脚本本身存在语法错误,建议先在Mongo Shell中验证脚本可正常运行
  • 命令构造错误,比如未用BsonJavaScript正确包装脚本内容

方法3:安全替代方案(推荐)

由于eval命令存在注入风险,MongoDB官方不推荐在生产环境使用。更稳妥的方式是直接用.NET Driver的API实现脚本逻辑,比如替代上述计数脚本的写法:

var usersCollection = database.GetCollection<BsonDocument>("users");
var totalUsers = usersCollection.CountDocuments(Builders<BsonDocument>.Filter.Empty);
Console.WriteLine("总用户数: " + totalUsers);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:43:13