【问题标题】:mongoose use findOneAndUpdate and only return the updated element in array猫鼬使用 findOneAndUpdate 并且只返回数组中的更新元素
【发布时间】:2020-08-07 03:12:34
【问题描述】:

我有以下问题:

  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 个元素,那么加载所有内容的效率非常低,不是吗?

有人知道如何获取新添加的对象?

【问题讨论】:

  • 你能试试答案吗?您能否批准它是否有帮助或发布对其他人有帮助或澄清的答案?
  • @Gibbs 找不到。可能会与聚合框架一起使用,但一开始就很好。我用posts.slice(-1)切掉它
  • 我认为直到 4.2 才有支持。如果有支持,我会检查 4.4 并更新答案
  • @Gibbs 很好

标签: javascript mongodb mongoose


【解决方案1】:

很遗憾,findOneAndUpdate 没有选项

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

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

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 2018-07-10
    • 2018-08-11
    • 2016-06-20
    • 2020-10-22
    • 2022-01-22
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    相关资源
    最近更新 更多