【问题标题】:Create Data in mongoDb appropriately适当地在 mongoDb 中创建数据
【发布时间】:2016-02-29 03:05:13
【问题描述】:

我是 node.js 的新手,正在尝试创建一个 get 服务。涵盖了节点部分,但由于这是我第一次做后端,我想在建模我的数据时得到一些建议。

我的 MongoDB 中有一个非常简单的 JSON。

{
  "names": [
    “xyz",
    “abc",
    “def",
    “wxy",
    “stu",
    “ghi"
  ],
  “xyz": {
    “name": “XYZ",
    “at": “xyzid",
    “bird": “xyzbird",
    "music": “xyzmusic",
    “tube": “xyztube",
    "featured”:true
  },
  “abc": {
    “name": “ABC",
    “at": “abcat",
    “bird": “abcbird",
    “music": “abcmusic",
    "tube": “abctube",
    "featured":false
  },
  “def": {
    “name": “DEF",
    “at": “DEFAT",
    “bird": “DEFbird",
    “music": “defmusic",
    "tube": “deftube",
    "featured":false
  },
  “wxy": {
    “name": “WXY",
    “at": “wxyat",
    “bird": “wxybird",
    “music": “wxymusic",
    "tube": “wxytube",
    "featured":false
  },
 “stu": {
    “name": “STU",
    “at": “stuat",
    “bird": “stubird",
    “music": “stumusic",
    "tube": “stutube",
    "featured":false
 },
“ghi": {
    “name": “GHI",
    “at": “ghiat",
    “bird": “ghibird",
    “music": “ghimusic",
    "tube": “ghitube",
    "featured":false
 }
}

到目前为止,通过在线阅读,我似乎应该创建 2 个不同的集合,一个是“名称”,另一个是“详细信息”。这是对的吗 ?

是否有其他最佳方法可以将此数据存储在 MongoDb 中,并且无需进行过多处理即可轻松访问它。我正在使用 Mongoose 与 mongodb 交互。

在此先感谢,如果内容过于宽泛,我们深表歉意。

【问题讨论】:

  • 不幸的是没有正确的答案。很多方法:将所有数据存储在单个文档中(具有无限数组问题)与多个文档、单个与多个集合(影响您的查询范围)等。没有“最佳”方式 - 除了您的特定应用程序。

标签: node.js mongodb express mongoose data-modeling


【解决方案1】:

当然有。但首先你应该决定你的名字数组中有多少个名字。如果名字很少,那么你可以这样做:

{
"names": [
{
    name: “xyz",
    details: {
        “name": “XYZ",
        “at": “xyzid",
        “bird": “xyzbird",
        "music": “xyzmusic",
        “tube": “xyztube",
        "featured”:true
    }
},
{
    name: “abc",
    details: {
        “name": “ABC",
        “at": “abcat",
        “bird": “abcbird",
        “music": “abcmusic",
        "tube": “abctube",
        "featured":false
    }
},
{
    name: “def",
    details: {
        “name": “DEF",
        “at": “DEFAT",
        “bird": “DEFbird",
        “music": “defmusic",
        "tube": “deftube",
        "featured":false
    }
},
{
    name: “wxy",
    details: {
        “name": “WXY",
        “at": “wxyat",
        “bird": “wxybird",
        “music": “wxymusic",
        "tube": “wxytube",
        "featured":false
    }
},
{
    name: “stu",
    details: {
        “name": “STU",
        “at": “stuat",
        “bird": “stubird",
        “music": “stumusic",
        "tube": “stutube",
        "featured":false
    }
},
{
    name: “ghi",
    details: {
        “name": “GHI",
        “at": “ghiat",
        “bird": “ghibird",
        “music": “ghimusic",
        "tube": “ghitube",
        "featured":false
    }
}
]}

但如果名称数组中会有数百万个名称,那么我建议您为每个文档创建一个names 集合,例如:

{
    “name": “GHI",
    “at": “ghiat",
    “bird": “ghibird",
    “music": “ghimusic",
    "tube": “ghitube",
    "featured":false
}

而且我也认为在这种情况下不需要名称字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多