2015-11-11 89 views
3

當插入帶有自定義_id值的新文檔時,我遇到了一些奇怪的問題。如果我插入文檔的自定義_id爲102071663223038 它會被保存在數據庫中,如102071663223038 。由於某些原因,它會遞增1.爲什麼在插入自定義id值時MongoDB增加_id

什麼可能會導致這種情況?

我的查詢是:

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} 

回答

0

這是因爲「setDefaultsOnInsert:true」。當你使用這個選項時,你不能更新「_id」字段。它由貓鼬設置。 如果您想要定製「_id」,請確保「setDefaultsOnInsert」選項爲「false」。 它是貓鼬中的問題之一。

相關問題