gpt4 book ai didi

mongodb - 为什么 MongoDB 在使用自定义 id 值插入时将 _id 增加一个

转载 作者:可可西里 更新时间:2023-11-01 09:55:13 24 4
gpt4 key购买 nike

插入具有自定义 _id 值的新文档时,我遇到了一些奇怪的问题。如果我插入自定义 _id 为 1020716632230383 的文档,它会在数据库中保存为 1020716632230384。由于某种原因,它增加了 1。

这可能是什么原因造成的?

我的查询是:

exports.register = function(req, res){
console.log('ATTEMPT to register a user with id: ' + req.body.userInfo.id);
// prints 1020716632230383 !!!

var query = {'_id': req.body.userInfo.id};

var update = {
'_id': req.body.userInfo.id ,
'name': req.body.userInfo.name
};

var options = {
upsert: true,
setDefaultsOnInsert : true
};

User.findOneAndUpdate(query, update, options).exec(function(err ,doc){
if(!err){
console.log('REGISTERED!: ' , doc);
res.status(200).json({'success': true, 'doc': doc});
}else{
console.log(err);
res.status(200).json({'success': false});
}

});
};

在我的模式中,_id 被定义为一个数字。

_id: {type:Number}

最佳答案

这是因为“setDefaultsOnInsert : true”。当您使用此选项时,您无法更新“_id”字段。它是由 Mongoose 设置的。如果您想要自定义“_id”,请确保“setDefaultsOnInsert”选项为“false”。这是 mongoose 中的问题之一。

关于mongodb - 为什么 MongoDB 在使用自定义 id 值插入时将 _id 增加一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33658227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com