NodeJS猫鼬updateOne每次都不匹配

时间:2020-01-28 10:17:37

标签: node.js mongoose

我正在尝试使用updateOne方法使用mongoose更新mongo中的文档:

const updateResult = await UserModel.updateOne({
    _id: mongoose.Types.ObjectId(userId)
}, {
    $set: {
        a: 'B'
    }
})
  • userId包含用户ID的字符串。

我尝试使用以下内容

       1. { _id: userId }
       2. { email: theEmailOfTheUser }

但是,updateResult是

 n:0, nModified:0,  ok:0

所以我认为方法本身必须与方法有关,而不是在我的查询中。

此外,当我尝试使用下面的查询查找用户时,它可以找到它:

const user = await UserModel.find({
        _id: userId
    });
//user is found

1 个答案:

答案 0 :(得分:1)

实际上猫鼬会照顾$set,而您不必添加它。只是:

const updateResult = await UserModel.updateOne({
    _id: userId
}, {
    a: 'B'
})

但是更好的解决方案是只使用findByIdAndUpdate()

const updateResult = await UserModel.findByIdAndUpdate(userId, {
    a: 'B'
})