我刚开始在MongoDB中使用子文档。
我有两个架构
childrenSchema = new Schema({
name: String
});
parentSchema = new Schema({
children: [childrenSchema]
});
我应该为每个架构创建一个模型,还是最好只为parentSchema
建立一个模型?
我没有看到为每个人创建模型的优势,因为我不想使用关系查询。
答案 0 :(得分:0)
我建议您只为model
创建一个Parent
,然后您可以push
Child
。
在这种情况下,deleting
家长也会自动delete
个孩子。但是,如果您为Child制作另一个模型,则必须delete
children
parent
delete
parent
之前child
。
<强>交替强>
如果您不想删除deletion
Parent
create
上的Parent
,则应Child
两个型号,一个reference
和另一个用于sub-document
,并使用_id
代替mongoose populate
来存储儿童。这样您就不必将整个子文档存储在父文档中,只需childrenSchema = new Schema({
name: String
});
var child = mongoose.model('child',childrenSchema);
parentSchema = new Schema({
children: [{type : Schema.Types.ObjectId , ref : 'child'}]
});
即可。稍后,您可以使用+
检索有关孩子的信息。
-
答案 1 :(得分:0)
在这种情况下我会关注。
将以下定义,模式,模型分开:
1)db / definitions.js:
const
mongoose = require('mongoose'),
Schema = mongoose.Schema,
definitions = require('./definitions');
Child = new Schema(definitions.Child),
Parent = new Schema(definitions.Parent);
module.exports = {
Child,
Parent
};
2)db / schemas.js:
const
mongoose = require('mongoose'),
Model = mongoose.model,
schemas = require('./schemas');
const
Child = Model('Child', schemas.Child),
Parent = Model('Parent', schemas.Parent);
module.exports = {
Child,
Parent
};
3)db / models.js:
public List<Whatever> generateList() {
return new ArrayList<>();
}