Mongoose 模式的结构应该是怎样的?

Mongoose 模式的结构应该是怎样的?,mongoose,Mongoose,在我的mongoDB中,存储了几个具有相同结构的文档 { "id": id1 "brand": "name1" "models": [ { "infos": { "foo1": "A" "foo2": "B" }, } ] } 我应该只得到品牌价值。我应该创建模式{brand:String}还是在文档保存到数据库时创建完全相同的模式?如果您只需要“brand”,那

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

{
   "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”。例如,如果您编写了“品牌”,则集合名称可能是“品牌”。本文讨论了如何强制使用集合名称: