Это на самом деле не так, как с другими драйверами, и я не могу придумать вескую причину, почему он возвращал бы результат записи на вставку для фактической пакетной вставки, поскольку это противоречит цели / оптимизации пакетной вставки (котораяMongoDB рассматривается как одна операция и поэтому требует только одного вызова getLastError ().
Как работает фактическая пакетная вставка, так это то, что пакетная вставка выполняется MongoDB без драйвера, выполняющего вызов getLastError () для каждой вставки,Это имеет очевидный недостаток: вы не можете видеть, была ли вставка успешной, за исключением последней в пакете (в случае ContinueOnError = false) или если какая-либо из них завершилась неудачно (в случае ContinueOnError = true, в которойслучай, когда фактическая ошибка относится к последней неудачной вставке).
Казалось бы, метод драйвера C # для пакетных вставок, который вы используете, на самом деле является вспомогательным методом, который делает пары insert / getLastError для каждой вставки.Это прекрасно работает и говорит вам, какая именно вставка завершилась неудачно, но, следовательно, это не фактическая пакетная вставка и не использует преимущества оптимизации.
Пакетные вставки не являются атомарными.Это просто оптимизация для уменьшения накладных расходов getLastError ().