sql >> Base de Datos >  >> NoSQL >> MongoDB

Upserting en Mongo DB usando el controlador oficial de C#

Versión 2 del controlador MongoDB C# requiere configurar IsUpsert bandera en los comandos de escritura. Este ejemplo alterará un documento completo.

var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
var result = await collection.ReplaceOneAsync(
                filter: new BsonDocument("_id", 123),
                options: new ReplaceOptions { IsUpsert = true },
                replacement: newDoc);

Versión 1 del controlador MongoDB C# implementa esta lógica dentro de Save dominio.

var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);

El método Guardar es una combinación de Insertar y Actualizar. Si el miembro Id del documento tiene un valor, entonces se supone que es un documento existente y Save llama a Update en el documento (configurando el indicador Upsert en caso de que en realidad sea un documento nuevo después de todo). De lo contrario, se supone que es un documento nuevo y Save llama a Insert después de asignar primero un valor único recién generado al miembro Id.

Referencia:http://mongodb.github.io/mongo-csharp-driver/1.11/driver/#save-tdocument-method

Nota:Sin embargo, esto requiere la asignación adecuada del campo Id. Más información sobre eso aquí:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property