首页 > 解决方案 > 在 MongoDB 中存储数据的最佳方式是什么?

问题描述

我想知道我在 MongoDB 中的数据结构的最佳选择是什么。

我有这个系列:

事件集合

{
"_id": {
    "$oid": "611ffe86c7db41a72d3b8635"
},
"title": "...",
"description": "...",
"creatorID": "...",
"imageUrl": "..."
}

和,

评论收藏:

{
"_id": {
    "$oid": "some ID"
},
"eventID": "611ffe86c7db41a72d3b8635",
"text": "..."
}

在每个事件中,可以有多个出版物。我确实创建了两个集合,因此我可以从一个事件 ID 调用Thing.find({ eventID: 'a event ID' })并从一个事件中获取所有出版物。

它工作正常,但我看到在一个字段中可以为一个父级存储数组或多个子级。我想知道是否最好使用这两个结构之一(只有一个集合):

结构 1:

  {
"_id": {
    "$oid": "611ffe86c7db41a72d3b8635"
},
"title": "...",
"publications" : [ "PUBLICATION 1" , "PUBLICATION 2", ...  ]
"description": "...",
"creatorID": "...",
"imageUrl": "...",
}

结构2:

    "_id": {
        "$oid": "611ffe86c7db41a72d3b8635"
    },
    "title": "...",
    "publications" : {
"1" : "Publication 1",
"2" : "Publication 2", 
"3" : "Publication 3", 
...
}
    "description": "...",
    "creatorID": "...",
    "imageUrl": "...",
    }

考虑到可能有数以百万计的事件和数以千万计的出版物,根据这些标准,最好的选择是什么:

-查询速度

-成本

-动态(添加一个出版物,修改它,删除它,...)

-也许是其他人?

先感谢您 !

标签: node.jsarraysmongodbdata-structures

解决方案


你应该array为此使用一个。就像您说的那样,这可能是一个非常庞大的数据,dynamically allocating memory在这种情况下,请让您的程序正常运行slower


推荐阅读