当前位置: 首页 > 知识库问答 >
问题:

为每个用户创建集合好吗?[闭门]

谈旺
2023-03-14

我对架构有一个问题。我创建了一个从用户那里收集大量数据的应用程序,我必须将其保存在某个地方。在mongoDB中快速将所有用户的所有数据保存在一个集合中将导致达到集合中16MB数据的允许限制。出于这个原因,我决定通过创建这样的集合名称为我的应用程序的每个后续用户创建一个新集合:

const getCollectionName = (userId: string) => {
  return `${COLLECTIONS.DATA}_${userId}`
}

await mongoDb.createCollection(getCollectionName(userId));

我从与firebase合作的经验中汲取了这个想法,在firebase中,我们可以轻松管理给定集合的子集合。

现在我有一个问题,为我的应用程序的每个用户分别创建一个新的集合是一个好主意,还是这种存储数据的方式会带来一些我不知道的不便?

共有1个答案

高鸿振
2023-03-14

在MongoDB中,BSON文档的最大大小为16兆字节,而不是*集合。就子集合而言,您可以在MongoDB中使用嵌套集合(类似于Firestore),但这将计入16MB文档大小限制。

还包括结帐:

>

  • mongodb子文档是否等同于Firestore子集合?

    如何在MongoDB中的文档中创建集合?

    为我的应用程序的每个用户单独创建一个新集合是个好主意吗,

    虽然可以这样做,但无论何时创建每个集合,都必须为其创建索引。根据用例的不同,在单个集合中存储所有用户的数据可能会更容易。

  •  类似资料:
    • 所以我认为这里有2个场景: 每个地区(西欧除外)创建一个大型存储帐户,每个应用程序创建一个容器。存储帐户转到每个区域的资源组 1的退税: > 容器被设计为具有扁平结构(您可以创建文件夹,但这并不明显) 2的退税: 很多存储帐户 考虑到这一点,我想说为每个应用程序创建存储帐户是一个更好的选择,但也许我遗漏了一些东西。 所以问题是:在这里有其他的事情要比另一个更好的选择吗?也许是成本? 我偶然发现了一

    • 问题内容: 我正在看下面的代码片段: 从这里:http : //howtonode.org/node-redis- fun 。 我不太了解发生了什么。从示例中,我认为Redis客户端是数据库和程序员之间的某种接口,但现在看来他们正在为每个提交的代码创建一个新客户端(他们在教程中构建的应用程序接受代码段)提交并将其存储在数据库中)! 另外,Redis数据库存储在哪里?与脚本位于同一目录中吗?我该如何

    • 问题内容: 如何创建像http://user.mywebsite.com这样的子域?我是否必须以某种方式访问​​htaccess?是否真的可以通过纯PHP代码创建它,或者我需要使用一些外部脚本服务器端语言? 对于那些回答的人:那么,我是否应该问我的托管服务商他们是否提供某种类型的DNS访问? 问题答案: 您要创建自定义 A记录 。 我很确定您可以在指定A记录时使用通配符,从而使您可以执行以下操作:

    • 问题内容: 我有一个在列表中存储一些数据的对象。该实现可能会在以后更改,并且我不想向最终用户公开内部实现。但是,用户必须具有修改和访问此数据集合的能力。目前我有这样的事情: 这是否意味着我已允许内部实施细节泄漏出去?我应该这样做吗? 问题答案: 这仅取决于您是否希望您的用户能够索引数据?如果是,请使用列表。两者都是接口,因此您不会泄漏实现细节,实际上,您只需要确定所需的最低功能即可。

    • MongoDB 中的集合是一组文档的组合,类似于关系型数据库(例如 MySQL)中的数据表。集合存在于数据库中,且没有固定的结构,您可以向集合中插入不同格式或类型的数据。 在 MongoDB 中,您可以使用 createCollection() 方法来创建集合,语法格式如下: db.createCollection(name, options) 参数说明如下: name: 要创建的集合名称; op

    • 我使用ARM模板创建了Azure Cosmos DB。但是使用ARM模板,您无法在cosmos db中创建默认集合和数据库。 我有多个Cosmos DB帐户,对于每个Azure Cosmos DB,我想创建一个带有数据库的集合,并在其中插入一些虚拟记录。 因此,有人能建议我如何编写PowerShell脚本来创建默认集合以及每个Azure Cosmos DB中的数据库吗?