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

mongodb c# API V2:diferencia entre ReplaceOne y FindOneAndReplace

La documentación revela una firma 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
)

En particular, el tipo de retorno y el parámetro de opciones difieren.

Mientras que ReplaceOne devuelve un ReplaceOneResult , FindOneAndReplace devuelve un documento (tenga en cuenta la propiedad ReturnDocument en las opciones).

El ReplaceOptions son bastante limitados en comparación con FindOneAndReplaceOptions , p.ej. el primero no proporciona un sort propiedad para darle control sobre qué documento será el primero de los documentos coincidentes en la colección. Esto no importa si filtra en función de una ID, pero si desea reemplazar el documento más reciente, la opción de clasificación es muy útil.

(Nota al margen:personalmente encuentro la documentación aquí https:// docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ y aquí https://docs.mongodb.com/manual/ referencia/método/db.coleccion.findOneAndReplace/ mucho más útil, ya que explican el uso con más detalle y también proporcionan algunos ejemplos. Pero no sé qué tan cerca coincide con el controlador MongoDB C#).