首页 > 解决方案 > 为什么即使更新确实发生了 findOneAndUpdate 也不返回文档?

问题描述

我在 nodejs mongodb 库上遇到 findOneAndUpdate 操作问题,我无法判断更新是否完成。

我写了一个查询,可以按预期成功更新文档,但是更新后返回了 value:null。最终,我想区分三种情况:

  1. 已找到文档,无法更新
  2. 找到并成功更新文档
  3. 未找到文档

    const result = await collection.findOneAndUpdate(
      { caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} },
      { $push: {assignees: userId}})
    return result.value;
    

关于查询的一点解释:

如果我想附加userIdlist文档的字段

标签: node.jsmongodb

解决方案


添加{new: true}将在结果中返回更新的文档

const result = await collection.findOneAndUpdate(
  { caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} },
  { $push: {assignees: userId}},
{new: true}
)


推荐阅读