2017-08-23 33 views
0

問題在於當我在Windows上使用Robomongo檢查db記錄後,我看到只有一個集合使用名稱'maximas'創建兩條記錄, 如果我從中刪除Model2代碼,創建後的結果將是相同的,但必須是集合'最大值'。Mongodb集合名稱在創建後發生了變化

有沒有代碼中的錯誤,我沒有看到,或這個詞是保留,任何想法?

代碼,

var mongoose = require('mongoose'); 

mongoose.connect('mongodb://localhost/mymodels', (e)=>{ 
if(e) throw e; 
}); 

var schema = new mongoose.Schema({ 
text: {type: String} 
}); 

var Model1 = mongoose.model('maxima', schema); 

var Model2 = mongoose.model('maximas', schema); 

var newData1 = new Model1({ 
text: 'test' 
}); 

var newData2 = new Model2({ 
text: 'test' 
}); 

newData1.save((e)=>{ 
if(e) throw e; 
console.log('Saved'); 
}); 


newData2.save((e)=>{ 
if(e) throw e; 
console.log('Saved'); 
}); 

回答

0

貓鼬會自動pluralise型號名稱作爲集合名稱。這就是爲什麼它們都是相同的,因爲第二個集合名稱已經是複數形式。

您可以通過所需的集合名稱作爲第三個模型參數:

var Model1 = mongoose.model('maxima', schema, 'maxima'); 

var Model2 = mongoose.model('maximas', schema, 'maximas'); 

注意:您還可以指定你的集合名稱爲架構中的一個選項:

var schema = new mongoose.Schema({ 
    text: { type: String } 
}, { 
    collection: 'maxima' 
}); 

...但在這種情況下,您需要第二個模式,因此上面的第一種方法更適合於此。

+0

是的,你是對的,我發現貓鼬正在努力變得聰明。但是,你可以強制它成爲你想要的任何東西: var dataSchema = new Schema({..},{collection:'data'}), –

+0

很高興這有助於你 –

相關問題