MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Upserting no Mongo DB usando o driver C # oficial


Versão 2 do driver MongoDB C# requer a configuração do IsUpsert sinalizador nos comandos de gravação. Este exemplo fará upsert de um documento inteiro.
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);

Versão 1 do driver MongoDB C# implementa essa lógica dentro do Save comando.
var newDoc = new BsonDocument { { "_id", 123 }, { "someKey", "someValue" } };
collection.Save(newDoc);

O método Salvar é uma combinação de Inserir e Atualizar. Se o membro Id do documento tiver um valor, supõe-se que seja um documento existente e Save chama Update no documento (definindo o sinalizador Upsert apenas no caso de realmente ser um novo documento). Caso contrário, assume-se que é um novo documento e Save chama Insert após primeiro atribuir um valor exclusivo recém-gerado ao membro Id.

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

Nota:No entanto, isso requer o mapeamento adequado do campo Id. Mais informações sobre isso aqui:http://mongodb.github.io/mongo-csharp-driver/1.11/serialization/#identifying-the-id-field-or-property