Mongoose: findAndModifyを使用したfindOneAndUpdate

作成日 2016年07月10日  ·  3コメント  ·  ソース: Automattic/mongoose

findOneAndUpdateメソッドがfindOneAndUpdateの代わりに内部でfindAndModifyを使用するのはなぜですか?

投影設定を渡す必要がありますが、 findAndModifiyがそのようなパラメーターを受け取らず、ドキュメント全体を返すため、機能しません。

例えば:

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

最も参考になるコメント

ええ、すべてのAPIが独自の特別なスノーフレークになりたいので、少し混乱があります:)これで、mongodbドライバーが独自の癖を持つfindOneAndUpdate()関数を追加しましたが、mongooseのfineOneAndUpdate( )。

全てのコメント3件

マングースのfindOneAndUpdate() $は、基になるmongodbドライバーにfindOneAndUpdate()が存在するよりもずっと前から存在しているため、ドライバーのfindOneAndUpdate()は、とにかくfindAndModifyの薄いラッパーにすぎません。 また、ドライバーのfindOneAndUpdate()には、特にnewオプションと、 newreturnNewDocumentの違いに関連する、いくつかの風変わりなセマンティクスがあります。これは、マングースにとって厄介です。

投影が機能しないのは少し問題です。 基になるfindAndModify関数が使用する名前であるため、「projection」の代わりに「fields」を使用してみてください

明確にしていただきありがとうございます。 はい、名前に奇妙な違いがあることに気づきました。たとえば、 fieldsprojectionnewreturnNewDocumentなどです。

ええ、すべてのAPIが独自の特別なスノーフレークになりたいので、少し混乱があります:)これで、mongodbドライバーが独自の癖を持つfindOneAndUpdate()関数を追加しましたが、mongooseのfineOneAndUpdate( )。

このページは役に立ちましたか?
0 / 5 - 0 評価