Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Mongodb模式设计合适的一个建议_Mongodb_Mongodb Java_Schema Design_Mongodb Query - Fatal编程技术网

Mongodb模式设计合适的一个建议

Mongodb模式设计合适的一个建议,mongodb,mongodb-java,schema-design,mongodb-query,Mongodb,Mongodb Java,Schema Design,Mongodb Query,嗨,我是mongodb的新手。我正在使用java 我的关系表中有两个表system,system_属性 像这样的 Table Fields values System System_ID(PK), System_Info 100, cisc

嗨,我是mongodb的新手。我正在使用java

我的关系表中有两个表system,system_属性

像这样的

       Table              Fields                                        values

      System           System_ID(PK), System_Info                  100, cisc
                                                                   200, Gets
      System_prop      System_ID(FK), Prop_key, Description        100, good, success
                                                                   100, better,progress  
                                                                   200, worse,failed
我正在尝试为此创建一个模式。例如:插入一个文档

      System
         {
             "_id" : 100
             "System_Info" : "cisc"
             System_Properties :
                 { "system_id":100
                        [{prop_Key : "good", Description: "success"}, 
                         {prop_Key : "better", Description: "progress"}] }
         }
这是这个设计的最佳模式吗

为了避免连接,我们只嵌入文档


我怀疑system_id:100(关系表中的外键)是否必要,因为“_id”=100(关系表中的primarykey)也引用相同的值。

属性对象中的Foreight键是不必要的,因为您已将它们嵌入到文档中。系统属性应只是一个数组,甚至是类似以下对象的对象:

{
     "good": "success",
     "better": "progress"
}

有几种方法可以设计该模式,甚至可以使用两个集合。 因此:

您的应用程序如何使用存储的信息

您的嵌入式属性是否有无限的增长?=>坏主意

是否有一些只有两个属性,一些有100个,一些有1k?=>在一个集合中,尽量保持文档的一种大小。(如果您希望主文档使用favs/best 5,请使用bucketing)


更多信息:

模式设计对于数据库模型的效率非常重要。您希望避免以关系数据库的思维方式考虑mongodb的模式设计。特别是对于您的问题,您不需要为系统id设置外键,因为您正在将系统属性嵌入到系统文档中。此外,您的系统属性字段可以直接进入您的系统文档,而无需嵌入,正如上面所指出的Konstantin

以下是一些链接,让您开始思考在mongodb中进行模式设计时需要考虑的重要事项:

(mongodb正在运行)以下是一些模式设计示例: