为什么要为Mongoose 6子域创建数据库集合



我正在考虑将我的项目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(应该可以修复它。或者,不要创建它的模型(只创建架构(。

最新更新