【问题标题】:How should be the structure of a schema?架构的结构应该如何?
【发布时间】:2014-10-03 01:17:21
【问题描述】:

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

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

     ]
}

我应该只获得品牌价值。我应该创建架构{brand: String} 还是完全按照文档保存在数据库中的架构?

【问题讨论】:

  • 你的意思是你只需要品牌数据?

标签: mongoose


【解决方案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 

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

【讨论】:

  • schema的名字必须和mongodb中的集合一致?
  • 是的 - 您可以使用您的餐桌名称来代替“品牌”。然而,我发现 mongoose 会转换为小写字母并将“s”附加到末尾。例如,如果您写了“品牌” - 集合名称可能是“品牌”。这篇文章讨论了如何强制集合名称:stackoverflow.com/questions/7486528/…
猜你喜欢
  • 2011-01-10
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2020-05-07
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多