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

mongodb c# API V2:Forskellen mellem ReplaceOne og FindOneAndReplace

Dokumentationen afslører en anden metodesignatur:

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
)

Mest bemærkelsesværdigt er returtypen og indstillingsparameteren forskellige.

Mens ReplaceOne returnerer en ReplaceOneResult , FindOneAndReplace returnerer et dokument (vær opmærksom på ReturnDocument-egenskaben i mulighederne).

ReplaceOptions er ret begrænsede sammenlignet med FindOneAndReplaceOptions kode> , for eksempel. førstnævnte giver ikke en sort ejendom for at give dig kontrol over, hvilket dokument der bliver det første af de matchende dokumenter i samlingen. Dette betyder ikke noget, hvis du filtrerer baseret på et ID, men hvis du vil erstatte det seneste dokument, er sorteringsmuligheden meget nyttig.

(Sidebemærkning:Jeg finder personligt dokumentationen her https:// docs.mongodb.com/manual/reference/method/db.collection.replaceOne/ og her https://docs.mongodb.com/manual/ reference/method/db.collection.findOneAndReplace/ meget mere nyttigt, da de forklarer brugen mere detaljeret og også giver nogle eksempler. Men jeg ved ikke, hvor tæt den matcher MongoDB C#-driveren.)




  1. Node.js &Redis; Venter på, at en løkke er færdig

  2. Kun forespørge underdokument og returnere matchende underdokument

  3. Hvorfor får man fejl ved opdatering af MongoDb?

  4. Rails 4 og mongoid:opbyg en forespørgsel programmæssigt med flere OG- og ELLER-betingelser