mongoosefindByIdAndUpdate不修改模型,不返回错误

我有一个名为消息的mongoose模型,当创build该模型时,我想将消息ID保存到另一个名为User的模型中的数组。 但是,当调用findByIdAndUpdate方法时,不会修改用户模型,也不会返回错误消息。 我已经检查过我正在使用正确的用户ID,并且该消息ID也是有效的。 任何想法,为什么mongoose是这样的行为?

Message.post('save', function addMessageToUser(doc) { User.findByIdAndUpdate(doc.userID, { $push: { messages: { $each: [doc._id], $sort: { createdAt: 1 }, $slice: -1000, }, }, }, { new: true, }, (response, error) => { console.log(response); console.log(error); }) }); 

在mongo cli中尝试了相同的命令之后,我发现doc.userID没有被转换为ObjectId。 相反,我使用mongoose.Type.Object(doc.userID)在执行查询之前将string强制转换为ObjectId。

 Message.post('save', function addMessageToUser(doc) { User.update({ "_id": mongoose.Types.ObjectId(doc.userID), }, { $push: { messages: { $each: [doc._id], $sort: { createdAt: 1 }, $slice: -1000, }, }, }) }