MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Upserting in Mongo DB utilizzando il driver C# ufficiale

Versione 2 del driver MongoDB C# richiede l'impostazione di IsUpsert flag nei comandi di scrittura. Questo esempio inserirà un intero documento.

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);

Versione 1 del driver MongoDB C# implementa questa logica all'interno di Save comando.

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

Il metodo Salva è una combinazione di Inserisci e Aggiorna. Se il membro Id del documento ha un valore, si presume che sia un documento esistente e Save chiama Update sul documento (impostando il flag Upsert nel caso in cui si tratti effettivamente di un nuovo documento). Altrimenti si presume che sia un nuovo documento e Salva chiamate Inserisci dopo aver prima assegnato un valore univoco appena generato al membro Id.

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

Nota:tuttavia, ciò richiede la corretta mappatura del campo ID. Maggiori informazioni su questo qui:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property