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#.)