Mongoose: findOneAndUpdate mit findAndModify

Erstellt am 10. Juli 2016  ·  3Kommentare  ·  Quelle: Automattic/mongoose

Warum verwendet die Methode $#$ findOneAndUpdate findAndModify unter der Haube findAndModify anstelle von findOneAndUpdate ?

Ich muss Projektionseinstellungen übergeben, aber es funktioniert nicht, weil findAndModifiy solche Parameter nicht akzeptiert und daher das gesamte Dokument zurückgibt.

Z.B:

Product
      .findOneAndUpdate({
        _id: productId,
      }, {
        $push: {colors: data},
      }, {
        projection: {
          name: 1, 'colors.$': 1,
        },
        returnNewDocument: true,
      })

Hilfreichster Kommentar

Ja, es gibt ein wenig Verwirrung, weil jede API ihre eigene spezielle Schneeflocke sein möchte :) Jetzt, da der Mongodb-Treiber eine findOneAndUpdate() -Funktion hinzugefügt hat, die ihre eigenen Macken hat, bin ich mir noch nicht ganz sicher, wie ich mit Mongooses fineOneAndUpdate( )

Alle 3 Kommentare

Weil findOneAndUpdate() Mongoose lange vor der Existenz von findOneAndUpdate() im zugrunde liegenden Mongodb-Treiber liegt und findOneAndUpdate() des Treibers sowieso nur eine dünne Hülle um findAndModify ist. Außerdem hat das findOneAndUpdate() des Treibers mehrere skurrile Semantiken, insbesondere im Zusammenhang mit der Option new und dem Unterschied zwischen new und returnNewDocument , die für Mungo lästig sind.

Projektionen, die nicht funktionieren, sind ein kleines Problem. Versuchen Sie, 'fields' anstelle von 'projection' zu verwenden, da dies der Name ist, den die zugrunde liegende findAndModify -Funktion verwendet

Danke fürs klarstellen. Ja, ich habe bemerkt, dass es einige seltsame Unterschiede bei der Benennung gab, zB fields vs. projection und new vs. returnNewDocument .

Ja, es gibt ein wenig Verwirrung, weil jede API ihre eigene spezielle Schneeflocke sein möchte :) Jetzt, da der Mongodb-Treiber eine findOneAndUpdate() -Funktion hinzugefügt hat, die ihre eigenen Macken hat, bin ich mir noch nicht ganz sicher, wie ich mit Mongooses fineOneAndUpdate( )

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen