MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongodb c# API V2 :Différence entre ReplaceOne et FindOneAndReplace

La documentation dévoile une signature de méthode différente :

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
)

Plus particulièrement, le type de retour et le paramètre d'options diffèrent.

Tandis que ReplaceOne renvoie un ReplaceOneResult , FindOneAndReplace renvoie un document (attention à la propriété ReturnDocument dans les options).

Les ReplaceOptions sont plutôt limités par rapport à FindOneAndReplaceOptions , par exemple. le premier ne fournit pas de sort propriété pour vous donner le contrôle sur le document qui sera le premier des documents correspondants dans la collection. Cela n'a pas d'importance si vous filtrez en fonction d'un ID, mais si vous souhaitez remplacer le dernier document, l'option de tri est très utile.

(Remarque :je trouve personnellement la documentation ici https:// docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ et ici https://docs.mongodb.com/manual/ reference/method/db.collection.findOneAndReplace/ beaucoup plus utile, car ils expliquent l'utilisation plus en détail et fournissent également quelques exemples. Mais je ne sais pas à quel point cela correspond au pilote MongoDB C#.)