Mongodb集合名称在创建后更改

时间:2017-08-23 17:02:08

标签: mongodb mongoose mongoose-schema

问题是我在运行此代码后,在Windows上检查带有Robomongo的db记录后,我看到只创建了一个名为'maximas'的集合,其中包含两条记录, 如果我从代码中删除Model2,创建后的结果将是相同的,但必须是集合'maxima'。

代码中是否有我看不到的错误,或者这个词是保留的,有什么想法吗?

代码,

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');
});

1 个答案:

答案 0 :(得分:0)

Mongoose会自动将您的模型名称复数为集合名称。这就是为什么它们都是相同的,因为第二个集合名称已经是复数形式。

您可以将所需的集合名称作为第三个模型参数传递:

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

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

注意:您还可以在集群中指定集合名称作为选项:

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

...但在这种情况下,您需要第二个模式,因此上面的第一种方法更适合。