Mongoose 模式的结构应该是怎样的?
在我的mongoDB中,存储了几个具有相同结构的文档Mongoose 模式的结构应该是怎样的?,mongoose,Mongoose,在我的mongoDB中,存储了几个具有相同结构的文档 { "id": id1 "brand": "name1" "models": [ { "infos": { "foo1": "A" "foo2": "B" }, } ] } 我应该只得到品牌价值。我应该创建模式{brand:String}还是在文档保存到数据库时创建完全相同的模式?如果您只需要“brand”,那
{
"id": id1
"brand": "name1"
"models": [
{
"infos": {
"foo1": "A"
"foo2": "B"
},
}
]
}
我应该只得到品牌价值。我应该创建模式
{brand:String}
还是在文档保存到数据库时创建完全相同的模式?如果您只需要“brand”,那么只需在模式中指定“brand”即可。然而,这意味着您只能通过Mongoose模型读取/或指定品牌,而不能通过其他字段
例如:
>>>var schema = {brand: String};
>>>var MyModel = Mongoose.model('Brand', schema);
>>>
>>>var object = new MyModel({brand : 'test'})
该模型将限制您仅在模型中指定字段:
>>>object.models = [];
>>>object.save();
>>>
>>>MyModel.findOne({}, function(err, result){
>>> console.log(result.models);
>>>});
undefined
您的模型不知道该字段,也无法处理它。它将无法将它保存到数据库或检索它-即使您设法通过其他方式将它放在那里。如果在某个时候您可能想要操作模式,我建议您将所有内容添加到模式中。您的意思是只需要品牌数据?模式的名称必须与mongodb中的集合相同?是-您将使用表的名称而不是“品牌”。然而,我发现猫鼬会转换成小写,并在末尾附加“s”。例如,如果您编写了“品牌”,则集合名称可能是“品牌”。本文讨论了如何强制使用集合名称: