MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

mongodb c# API V2:differenza tra ReplaceOne e FindOneAndReplace

La documentazione svela una firma del metodo diversa:

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
)

In particolare, il tipo restituito e il parametro delle opzioni differiscono.

Mentre ReplaceOne restituisce un ReplaceOneResult , FindOneAndReplace restituisce un documento (tenere presente la proprietà ReturnDocument nelle opzioni).

Il ReplaceOptions sono piuttosto limitati rispetto a FindOneAndReplaceOptions , per esempio. il primo non fornisce un sort proprietà per darti il ​​controllo su quale documento sarà il primo dei documenti corrispondenti nella raccolta. Non importa se filtri in base a un ID, ma se desideri sostituire l'ultimo documento l'opzione di ordinamento è molto utile.

(Nota a margine:personalmente trovo la documentazione qui https:// docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ e qui https://docs.mongodb.com/manual/ reference/method/db.collection.findOneAndReplace/ molto più utili, poiché spiegano l'utilizzo in modo più dettagliato e forniscono anche alcuni esempi. Ma non so quanto corrisponda al driver MongoDB C#.)