Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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_Database Design - Fatal编程技术网

MongoDB中的嵌套内容

MongoDB中的嵌套内容,mongodb,database-design,Mongodb,Database Design,我正在构建一个旅游应用程序,它将具有以下结构 收藏 地点 类别 在同一时间,一个地方将有许多地方与之关联。它可以是一个区域,例如 库格在库格有很多地方,比如塔拉卡维里、布拉马吉里山 我的位置结构如下 [ { "_id": "PLACE-ID", "name": "", "slug": "", "decription": "", "display_photo": [ {

我正在构建一个旅游应用程序,它将具有以下结构

收藏 地点 类别

在同一时间,一个地方将有许多地方与之关联。它可以是一个区域,例如

库格在库格有很多地方,比如塔拉卡维里、布拉马吉里山

我的位置结构如下

[
    {
        "_id": "PLACE-ID",
        "name": "",
        "slug": "",
        "decription": "",
        "display_photo": [
            {
                "title": "",
                "file": "",
                "credit": ""
            }
        ],
        "location": [
            {
                "city": "",
                "state": "",
                "country": "",
                "coordinates": ["<longitude> ", "<latitude>"]
            }
        ],
        "categories": ["", ""]
    }
]
[
{
“_id”:“PLACE-id”,
“名称”:“,
“slug”:“,
“说明”:“,
“显示照片”:[
{
“名称”:“名称”,
“文件”:“,
“信用证”:”
}
],
“地点”:[
{
“城市”:“,
“国家”:“,
“国家”:“,
“坐标”:[“”,“”]
}
],
“类别”:[“”,“”]
}
]

在必要时,哪种方法是添加父位置或子位置链接的最佳方法?我是否需要插入
\u id
或需要另一个存储这些关系的集合。

架构设计最重要的部分是考虑数据使用模式。需要特别考虑:

  • 您将如何访问和显示数据
  • 您需要结合查询/筛选哪些文档和子文档属性
  • 为了获得最佳应用程序性能,您的目标是尽可能少的有线通信量,因此最终目标是能够以尽可能少的请求获取信息并写回内容。最好一个一个


    尝试在一个文档中获取尽可能多的有用信息,并且只在必要时访问引用。

    尝试将非关系数据库用作关系数据库会带来痛苦。为什么不使用关系型数据库——MySQL、PostgreSQL等等?@ceejayoz bcos认为mondoDB会增加一个优势。在同一个集合中存储两个位置之间关系的最佳方式是什么?为什么您这么确定?在这里,您没有将MongoDB用于MongoDB友好的用例。即使是像谷歌和Facebook这样的大公司也有理由在某些事情上使用关系数据库。@ceejayoz我完全同意。我的应用程序将以foursquare为模型,其中的数据非常非结构化。即使是在某些地方,也会有许多不寻常的因素。因此,我们在相同的基础上决定什么是最好的,取决于比Stackoverflow考虑的因素多得多的因素。请查看数据建模指南:。尝试一些模型,做大量的性能测试来验证。您肯定希望您的数据模型能够有效地支持您的使用模式,但我要强调的是,目标并不总是将所有内容都放在一个文档中。频繁增长(或无限增长)的文档是一种明确的反性能模式;具有高度嵌套结构的文档查询或更新效率也很低。MongoDB手册中有一个很好的章节介绍了一些概念、注意事项和模式。