MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

mongodb c# API V2:Unterschied zwischen ReplaceOne und FindOneAndReplace

Die Dokumentation enthüllt eine andere Methodensignatur:

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
)

Vor allem der Rückgabetyp und die Optionsparameter unterscheiden sich.

Während ReplaceOne gibt ein ReplaceOneResult zurück , FindOneAndReplace gibt ein Dokument zurück (achten Sie auf die ReturnDocument-Eigenschaft in den Optionen).

Die ReplaceOptions sind im Vergleich zu FindOneAndReplaceOptions , z.B. Ersteres bietet keine sort -Eigenschaft, um Ihnen die Kontrolle darüber zu geben, welches Dokument das erste der übereinstimmenden Dokumente in der Sammlung sein wird. Dies spielt keine Rolle, wenn Sie nach einer ID filtern, aber wenn Sie das neueste Dokument ersetzen möchten, ist die Sortieroption sehr nützlich.

(Nebenbemerkung:Ich persönlich finde die Dokumentation hier https:// docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ und hier https://docs.mongodb.com/manual/ reference/method/db.collection.findOneAndReplace/ viel hilfreicher, da sie die Verwendung ausführlicher erklären und auch einige Beispiele liefern. Aber ich weiß nicht, wie genau es mit dem MongoDB-C#-Treiber übereinstimmt.)