Mongoose: findOneAndUpdate 使用 findAndModify

创建于 2016-07-10  ·  3评论  ·  资料来源: Automattic/mongoose

为什么findOneAndUpdate方法在底层使用findAndModify而不是findOneAndUpdate

我需要传递投影设置,但它不起作用,因为findAndModifiy不采用此类参数,因此它返回整个文档。

例如:

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

最有用的评论

是的,那里有点混乱,因为每个 API 都想成为它自己的特殊雪花:) 现在 mongodb 驱动程序添加了一个findOneAndUpdate()函数,它有自己的怪癖,不太确定如何继续使用 mongoose 的 fineOneAndUpdate( )

所有3条评论

因为 mongoose 的findOneAndUpdate() long 早于底层 mongodb 驱动程序中findOneAndUpdate()的存在,并且驱动程序的findOneAndUpdate() findAndModify的薄包装。 此外,驱动程序的findOneAndUpdate()有几个古怪的语义,特别是与new选项以及newreturnNewDocument之间的区别有关,这对猫鼬来说很麻烦。

投影不起作用是一个问题。 尝试使用“fields”而不是“projection”,因为这是底层findAndModify函数使用的名称

感谢您的澄清。 是的,我注意到命名上有一些奇怪的差异,例如fieldsprojectionnewreturnNewDocument

是的,那里有点混乱,因为每个 API 都想成为它自己的特殊雪花:) 现在 mongodb 驱动程序添加了一个findOneAndUpdate()函数,它有自己的怪癖,不太确定如何继续使用 mongoose 的 fineOneAndUpdate( )

此页面是否有帮助?
0 / 5 - 0 等级