Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance MongoDB,对象性能的一般关系_Performance_Mongodb_Mongoose_Relationships - Fatal编程技术网

Performance MongoDB,对象性能的一般关系

Performance MongoDB,对象性能的一般关系,performance,mongodb,mongoose,relationships,Performance,Mongodb,Mongoose,Relationships,首先,我是DB设计和MongoDB的新手 我有一个这样的DB结构 title description [generic_object] date_created date_updated ... 泛型对象是指不同的内容类型,如下所示: food_venue: {lat: long:} 或 我试图告诉泛型对象有不同的类型/作业 我有这样的想法,但我认为这不是最好的办法 title description type : food or drink food : {food_id: ... $re

首先,我是DB设计和MongoDB的新手

我有一个这样的DB结构

title
description
[generic_object]
date_created
date_updated
...
泛型对象是指不同的内容类型,如下所示:

food_venue: {lat: long:}

我试图告诉泛型对象有不同的类型/作业

我有这样的想法,但我认为这不是最好的办法

title
description
type : food or drink
food : {food_id: ... $ref: food model}
drink : {drink_id: ... $ref: drink model}
...
如果我添加一个饮料对象,食物对象将为null或空白

在MongoDB(或MongooseJS)中设计此数据库的最佳性能方法是什么?

MongoDB是一个“无模式”数据库,因此存储的文档可能会有所不同。在泛型对象中,您只需保存所需的任何子文档(食物或饮料)。无论如何,为了方便起见,您的数据库中应该有一个结构,这样您就可以添加一些额外的字段。就你而言:

{
  title:"title",
  description:"description",
  generic:
  {
    type:"food",
    field1:"field1",
    field2:"field2",
    field4:"field3",
  }
}

{
  title:"title2",
  description:"description2",
  generic:
  {
    type:"drink",
    otherField1:"field1",
    otherField2:"field2",
  }
}
MongoDB对每个文档的限制是16MB,因此如果您非常确定不会使用那么大的空间,可以将所有信息嵌入到一个文档中

{
  title:"title",
  description:"description",
  generic:
  {
    type:"food",
    field1:"field1",
    field2:"field2",
    field4:"field3",
  }
}

{
  title:"title2",
  description:"description2",
  generic:
  {
    type:"drink",
    otherField1:"field1",
    otherField2:"field2",
  }
}