对此有一些问题,但我似乎无法找到目前似乎被接受的解决方案。
我正在尝试更新 MongoDB 中的文档,并且正在使用 Mongoosejs 来执行此操作。但是,我收到了这个错误:
{ [MongoError: Mod on _id not allowed]
name: 'MongoError',
lastErrorObject:
{ err: 'Mod on _id not allowed',
code: 10148,
n: 0,
connectionId: 35,
ok: 1 },
ok: 0,
errmsg: 'Mod on _id not allowed' }
我用来进行更新的代码是:
app.put('/task/:short', auth, function (req, res) {
Task.findOneAndUpdate({short:req.params.short}, req.body, function(err, task) {
if(err) console.log(err);
res.json(200, {content: task});
})
});
因为我有一个名为“short_id”的“字段”,我认为字段名称中包含“_id”部分可能是个问题,所以我将其更改为“short”,但仍然没有运气 - 我得到了同样的错误.后来我发现它认为我正在尝试更改 _id 字段,但我不知道为什么。
最佳答案
问题是因为我使用 short
(它是唯一的)来查找文档并对其进行更新,并且 _id
被作为值发送来更新 which can'完成不了。
因此,在发送参数之前,我从对象中删除了 _id
。
delete the_object._id
现在一切正常。
关于node.js - MongoError : Mod on _id not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103966/