C# mongodb driver 2.0 - How to upsert in a bulk operation?

Adrian Lopez picture Adrian Lopez · Feb 28, 2016 · Viewed 12.4k times · Source

I migrated from 1.9 to 2.2 and reading the documentation I was surprised to discover that is not possible to upsert during a bulk operation anymore, since operations don't allow options.

bulkOps.Add(new UpdateOneModel<BsonDocument>(filter, update));
collection.BulkWrite(bulkOps);

Should be

options.isUpsert = true;
bulkOps.Add(new UpdateOneModel<BsonDocument>(filter, update, options));
collection.BulkWrite(bulkOps);

Is this work in progress, intended, or I'm missing something? Thank you.

Answer

JohnnyHK picture JohnnyHK · Feb 28, 2016

Set the IsUpsert property of the UpdateOneModel to true to turn the update into an upsert.

var upsertOne = new UpdateOneModel<BsonDocument>(filter, update) { IsUpsert = true };
bulkOps.Add(upsertOne);
collection.BulkWrite(bulkOps);