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

mongodb c# API V2:Diferença entre ReplaceOne e FindOneAndReplace


A documentação revela uma assinatura de método diferente:

ReplaceOne :
ReplaceOneResult ReplaceOne(
    FilterDefinition<TDocument> filter,
    TDocument replacement,
    ReplaceOptions options = null,
    CancellationToken cancellationToken = null
)

FindOneAndReplace :
TProjection FindOneAndReplace<TProjection>(
    FilterDefinition<TDocument> filter,
    TDocument replacement,
    FindOneAndReplaceOptions<TDocument, TProjection> options = null,
    CancellationToken cancellationToken = null
)

Mais notavelmente, o tipo de retorno e o parâmetro de opções diferem.

Enquanto ReplaceOne retorna um ReplaceOneResult , FindOneAndReplace retorna um documento (atenção à propriedade ReturnDocument nas opções).

O ReplaceOptions são bastante limitados em comparação com FindOneAndReplaceOptions , por exemplo. o primeiro não fornece um sort propriedade para lhe dar controle sobre qual documento será o primeiro dos documentos correspondentes na coleção. Isso não importa se você filtrar com base em um ID, mas se quiser substituir o documento mais recente, a opção de classificação é muito útil.

(Observação:eu pessoalmente encontro a documentação aqui https:// docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ e aqui https://docs.mongodb.com/manual/ referência/método/db.collection.findOneAndReplace/ muito mais úteis, pois explicam o uso com mais detalhes e também fornecem alguns exemplos. Mas não sei o quão próximo ele corresponde ao driver MongoDB C#.)