【问题标题】:InsertMany from MongoDB C# API doesn't return acknowledged来自 MongoDB C# API 的 InsertMany 不返回已确认
【发布时间】:2019-01-28 08:09:14
【问题描述】:

根据 MongoDB C# 驱动程序中的 documentation 和代码 IMongoCollection.InsertMany 方法,不返回任何内容。这很奇怪,因为例如DeleteMany 返回 DeleteResult 信息。甚至 InsertMany 作为 Shell 方法也会返回带有 Acknowledged 等的信息(参见 here)。

这是什么原因?还有最重要的问题:如何快速(不牺牲性能)确认InsertMany 已正确完成(Acknowledged == true)?

【问题讨论】:

    标签: c# mongodb mongodb-.net-driver


    【解决方案1】:

    因为大多数情况下不需要这样做,因为如果记录已被插入,那么它将生成 Id 值并将其填充到已传递用于插入的对象中。要了解我的意思,请参阅此答案MongoDb bulk operation get id

    同样,您可以将此方法的异步版本与新驱动程序 InsertManyAsync() 一起使用,该驱动程序返回 Task,然后像往常一样,您可以检查 Task.IsCompleted 属性以了解它是否已成功完成。

    【讨论】:

      【解决方案2】:

      如果您查看 API 文档 (http://mongodb.github.io/mongo-csharp-driver/2.7/apidocs/html/M_MongoDB_Driver_IMongoCollection_1_InsertMany_1.htm),似乎 InsertMany 是一个 void 方法,因此它什么也不返回。

      它是基于异常的语义:如果它没有错误地完成,那么您确定您的所有文档都已成功插入

      【讨论】:

        猜你喜欢
        • 2020-10-07
        • 1970-01-01
        • 2019-05-27
        • 2018-12-29
        • 1970-01-01
        • 2013-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多