【发布时间】:2019-05-20 17:46:25
【问题描述】:
我在 nodejs mongodb 库上遇到 findOneAndUpdate 操作的问题,我无法判断更新是否完成。
我写了一个查询,可以按预期成功更新文档,但是更新后返回value:null。最终,我想区分三种情况:
- 找到文档,无法更新
- 找到并成功更新文档
-
找不到文档
const result = await collection.findOneAndUpdate( { caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} }, { $push: {assignees: userId}}) return result.value;
对查询的一点解释:
如果
,我想将userId 附加到文档的list 字段中
- caseId 匹配,
- 用户当前不在
list, - 列表的大小小于
maxLength
【问题讨论】:
-
正如我所提到的,在我的案例中没有返回任何内容,无论是原始文档还是更新的文档。在这种情况下,拥有 {returnOriginal: false} 将无济于事。该帖子中的解决方案没有帮助
-
@Andyk。如果没有返回任何内容,则您的查询不匹配任何内容。
-
@JacobHull 它确实匹配了一些东西。当我直接检查数据库时,新元素会在我第一次运行此查询时附加。令我惊讶的是,添加 $set 运算符解决了我的问题(有关代码,请参见下面的答案)。我不太清楚为什么