为什么在使用自定义id值插入时,MongoDB会将_id增加1

时间:2015-11-11 19:20:10

标签: mongodb mongoose mongodb-query

插入带有自定义_id值的新文档时,我遇到了一些奇怪的问题。如果我插入自定义_id为102071663223038 3 的文档,则会将其作为102071663223038 4 保存在数据库中。由于某种原因,它增加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});
    }

});
};

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

_id: {type:Number}

1 个答案:

答案 0 :(得分:0)

这是因为" setDefaultsOnInsert:true" 。当您使用此选项时,您无法更新" _id"领域。它是由猫鼬设定的。 如果你想要一个自定义" _id"确保" setDefaultsOnInsert"选项是" false"。 这是猫鼬的问题之一。