Mongodb updateOne with $或operator总是更新集合中的第一个文档,即使没有匹配



我有以下函数,用于向两个用户之间的私人房间添加评论。

saveComment: async function(comment) {
const id1 = comment.sender + comment.receiver;
const id2 = comment.receiver + comment.sender;

await Room.updateOne({
$or: [{
roomId: 'njnj' //should be id1
}, {
roomId: 'sadas' //should be id2
}],
$push: {
comments: comment
}
}).catch((err) => {
console.log(err);
});
}

问题是updateOne方法总是更新集合中的第一个文档(Room)即使我在查询中设置了随机id,也没有匹配。我认为问题是我没有正确使用$或操作符,但我无法找到任何错误。

如有任何帮助,不胜感激。

有一个问题,您已将查询和更新部分合并在同一个括号中,以纠正它,

await Room.updateOne(
{
$or: [
{ roomId: 'njnj' }, //should be id1 
{ roomId: 'sadas' } //should be id2
]
}
{      
$push: { comments: comment }
}
).catch((err) => { console.log(err); });

相关内容

  • 没有找到相关文章

最新更新