猫鼬使用findOneAndUpdate并仅返回数组中的更新元素

时间:2020-08-06 18:53:55

标签: javascript mongodb mongoose

我有以下问题:

  let post = await User.findOneAndUpdate(
    { _id: USER_ID },
    {
      $push: {
        posts: {
          title,
          content,
          userId: USER_ID,
          titleUrl,
          thumbnail: {
            webp: WEBP_PATH,
            jpeg: JPEG_PATH,
            placeholder: PLACEHOLDER
          }
        }
      }
    },
    { new: true }
  );

此查询效果很好。问题是,每当我将项目推到数组中时,我都想将更新后的元素取回。不幸的是,我得到了整个文档以及数组中的所有帖子。当然,我可以做类似posts.slice(-1)的事情,但是我认为如果我只需要1个元素,那么加载所有内容的效率就太低了吗?

有人有一个想法如何只获取新添加的对象?

1 个答案:

答案 0 :(得分:1)

不幸的是,findOneAndUpdate没有选择

您可以使用projection在原始文档上执行findOneAndUpdate,但不能在更新后的文档上执行{p}

我认为没有简单有效的方法可以做到这一点。