架构的结构应该如何?

时间:2014-08-09 19:57:02

标签: mongoose

在我的mongoDB中存储了几个具有相同结构的文档。

{
   "id": id1
   "brand": "name1"
   "models": [
       {
        "infos": {
           "foo1": "A"
           "foo2": "B"
       },
       }

     ]
}

我应该只获得品牌价值。我应该在文档保存在db上时创建模式{brand: String}还是完全确切的模式?

1 个答案:

答案 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 

您的模型并不了解该字段,也无法处理该字段。它无法将其保存到数据库或检索它 - 即使您设法通过其他方式将其保存在那里。如果在某些时候您可能想要操作它,我建议将所有内容添加到您的架构中。

相关问题