在我的mongoDB中存储了几个具有相同结构的文档。
{
"id": id1
"brand": "name1"
"models": [
{
"infos": {
"foo1": "A"
"foo2": "B"
},
}
]
}
我应该只获得品牌价值。我应该在文档保存在db上时创建模式{brand: String}
还是完全确切的模式?
答案 0 :(得分:1)
如果你想要的只是'品牌'那么只需指定品牌'在您的架构中。但是,这意味着您只能通过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
您的模型并不了解该字段,也无法处理该字段。它无法将其保存到数据库或检索它 - 即使您设法通过其他方式将其保存在那里。如果在某些时候您可能想要操作它,我建议将所有内容添加到您的架构中。