InsertMany из MongoDB C # API не возвращает подтвержденное - PullRequest
0 голосов
/ 28 января 2019

В соответствии с документацией и кодом IMongoCollection.InsertMany метод в драйвере MongoDB C # ничего не возвращает.Это странно, потому что, например, DeleteMany возвращает DeleteResult информацию.Даже InsertMany, поскольку метод Shell возвращает информацию с подтверждением и т. Д. (См. здесь ).

В чем причина этого?И самый важный вопрос: как быстро (без ущерба для производительности) получить подтверждение того, что InsertMany было сделано правильно (Acknowledged == true)?

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Если вы посмотрите на документацию API (http://mongodb.github.io/mongo-csharp-driver/2.7/apidocs/html/M_MongoDB_Driver_IMongoCollection_1_InsertMany_1.htm), то кажется, что InsertMany - это метод void, поэтому он ничего не возвращает.

Это семантика, основанная на исключениях: если он завершается без ошибок,так что вы уверены, что все ваши документы были успешно вставлены

0 голосов
/ 28 января 2019

Потому что в большинстве случаев это не нужно, поскольку, если запись была вставлена, она сгенерирует и заполнит значение Id для вашего объекта, который был передан для вставки.Чтобы понять, что я имею в виду, посмотрите этот ответ Массовая операция MongoDb: получите идентификатор

Опять же, вы можете использовать асинхронную версию этого метода с новым драйвером InsertManyAsync(), который возвращает Task и какобычно вы можете проверить свойство Task.IsCompleted, чтобы узнать, успешно ли оно завершено или нет.

...