我在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
字段中
list
maxLength
答案 0 :(得分:0)
添加{new: true}
将返回结果中更新的文档
const result = await collection.findOneAndUpdate(
{ caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} },
{ $push: {assignees: userId}},
{new: true}
)
答案 1 :(得分:0)
添加$ set更新运算符解决了我的问题。
似乎$ push更新运算符不会触发对nodejs的更新通知。新元素被添加到集合中,但是响应将其视为未完成更新。
const result = await collection.findOneAndUpdate(
{ caseId: caseId, list: {$ne: userId}, $expr: {$lt:[ {$size: '$list'}, 'maxLength']} },
{ $push: {assignees: userId}, $set: {caseId: caseId}})
return result.value;