【问题标题】:Why does MongoDB increase _id by one when inserting with custom id value为什么MongoDB在插入自定义id值时将_id加一
【发布时间】:2016-02-12 23:56:06
【问题描述】:

在插入具有自定义 _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}

【问题讨论】:

    标签: mongodb mongoose mongodb-query


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 2012-02-09
      • 2018-11-06
      • 2016-08-16
      • 2022-01-18
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多