我正在考虑将我的项目mongoose版本从5.10.19升级到最新版本(6.5.1(。我注意到我的数据库中的集合比以前多得多。我做了一个简单的例子来测试这一点,当我在mongoose 5上运行它时,我只看到集合";干线";但是猫鼬6创造了";干线";以及";subs";。我希望子文档模型不会像mongoose 5那样有自己的集合。
import { connect, model, Schema } from 'mongoose';
const mongoUrl = 'mongodb://localhost:27017/test';
(async () => {
const subSchema: Schema = new Schema({ color: String, yes: Boolean });
const mainSchema: Schema = new Schema({ name: String, sub: subSchema });
const MainModel = model('Main', mainSchema);
model('Sub', subSchema);
await connect(mongoUrl, { ssl: true, sslValidate: false });
console.log(`Successfully connected to mongodb: "${mongoUrl}"`);
await MainModel.create({ name: 'One', sub: { color: 'Yellow', yes: true } });
})()
.then(() => {
console.log('nSuccess');
process.exit();
})
.catch(() => {
console.log('nFailure');
process.exit();
});
是不是我错过了猫鼬的设置,才导致了这种情况的发生?
此外,在节点12.20.12上。
这可能是因为这个变化:
autoCreate
默认为true
,除非readPreference为secondary或secondary Preferred,这意味着Mongoose将在创建索引之前尝试创建每个模型的底层集合。
因此,在subSchema
上关闭autoCreate
(可能还有autoIndex
(应该可以修复它。或者,不要创建它的模型(只创建架构(。