Database 在MongoDB中存储自定义集合模板 背景

Database 在MongoDB中存储自定义集合模板 背景,database,mongodb,database-design,nosql,Database,Mongodb,Database Design,Nosql,我正在开发一个web应用程序,它要求用户创建和填写自定义表(想想HTML或MS Word表,而不是数据库表)。其想法是管理员将为这些表创建模板,一般用户将填写这些模板。每个普通用户都可以填写自己的模板,因此将有许多表使用相同的模板 现在,这些模板可以容纳任意数量的列,并且每列可以有不同的数据类型。它们也可以随着时间的推移而改变,这意味着它们应该有不同的版本。换句话说,一旦用户填写了模板,就应该使用该结构存储该模板,即使模板将来会更改。它将保留模板的旧版本,而新用户将使用最新版本 我通常使用关系数

我正在开发一个web应用程序,它要求用户创建和填写自定义表(想想HTML或MS Word表,而不是数据库表)。其想法是管理员将为这些表创建模板,一般用户将填写这些模板。每个普通用户都可以填写自己的模板,因此将有许多表使用相同的模板

现在,这些模板可以容纳任意数量的列,并且每列可以有不同的数据类型。它们也可以随着时间的推移而改变,这意味着它们应该有不同的版本。换句话说,一旦用户填写了模板,就应该使用该结构存储该模板,即使模板将来会更改。它将保留模板的旧版本,而新用户将使用最新版本

我通常使用关系数据库,但在这种情况下,关系数据库似乎并不适合。我觉得最终会有一堆表,需要许多连接来提取我需要的数据,特别是在数据库规范化的情况下

我想用MongoDB之类的东西。我是Mongo的新手,所以我确定我没有探索过每一个选项,但我认为这比使用MySQL(我在其他应用程序中使用过的MySQL)更好。不过,如果我错了,一定要告诉我;也许我错过了什么

我希望能够存储模板(名称、列(按顺序,以及它们的名称和数据类型)),然后在用户每次需要填写模板时重用这些模板。我将使用集合来存储使用相同模板版本的所有表。也就是说,每次创建模板时都会创建一个集合。集合中的所有文档都应该遵循定义的数据类型。如果我理解正确,MongoDB为此提供了模式验证

我的方法和问题
  • 如何在数据库中存储模板?我曾考虑将它们存储为“模板”集合中的文档,这类似于下面的示例,但我关心的是将数据类型存储为字符串

    {
        name: <String>,
        fields: [
            {
                name: <String>,
                type: <String>    <----this is what I have an issue with
            },
            ...
        ]
    }
    
    {
    姓名:,
    字段:[
    {
    姓名:,
    
    type:关于在我的应用程序中将模板存储在mongodb中,我有相同的想法。 您应该为您的项目使用标准模式,因为我们将有一些用于验证数据的支持库

  • JSON模式: 目前的版本是草案-07 。您可以阅读有关模式标准的信息,并使用多种程序语言创建客户端库
  • MongoDB: 现在MongoDB 3.6支持验证JSon模式草案-04
  • 在MongoDB中存储架构: 在集合中存储Json模式时会出现问题。 Json模式有一些不能存储在mongodb中的字符。 你可以参考
  • {
        template_id: <uuid, integer, string or something>
        name: <String>,
        rows: [
            {
                <field name>:<field value of specified type>,
                ...
            }
        ]
    }