【问题标题】:No console output with MongoDB [duplicate]MongoDB没有控制台输出[重复]
【发布时间】:2018-04-19 13:33:12
【问题描述】:

我已将 MongoDB 连接到 .NET,并且正在尝试将数据保存到数据库中。该程序运行良好,我的数据已插入数据库,但我从文档中的理解是,我也应该能够看到控制台窗口中发生的一切。这是我正在开发的示例程序。

static void Main(string[] args)
    {
        MainAsync().Wait();
        Console.ReadLine();
    }

    static async Task MainAsync()
    {
        var client = new MongoClient("mongodb://localhost:27017");
        IMongoDatabase db = client.GetDatabase("machines");
        var collection = db.GetCollection<BsonDocument>("cranes");

        var document = new BsonDocument
        {
            { "code", BsonValue.Create("0x657")},
            { "departments", new BsonArray(new[] {"Mech", "Forge"}) },
        };

        await collection.InsertOneAsync(document);
    }

这是我在运行程序时看到的控制台输出。

我可以看到数据已经成功添加到MongoDB Compass中,但是我在控制台窗口中没有任何反馈。

【问题讨论】:

  • "....但我从文档中的理解是,我也应该能够看到控制台窗口中发生的一切"。所以如果这是你的理解,那么这个声明实际上是在哪里做的?如果某些事情被歪曲,很高兴提出问题。但是,如果您想发表这样的声明,那么您需要通过提供参考来支持它。然后考虑一下。为什么要使用驱动程序记录任何输出“只是为了它。根据一般推理,您需要先明确告诉它做某事。

标签: c# .net mongodb cmd


【解决方案1】:

您需要改用MongoClientSettings 来启动MongoClient,并在那里订阅命令事件。

var url = MongoUrl.Create("mongodb://localhost:27017");
var settings = MongoClientSettings.FromUrl(url);
settings.ClusterConfigurator += b => b.Subscribe<CommandStartedEvent>(
    e => Console.WriteLine($"MongoDB: {e.Command.ToJson()}")
);

var client = new MongoClient(settings);
...

【讨论】: