使用数组数据进行快速读取的MongoDB数据模型

时间:2017-03-01 17:38:24

标签: mongodb

我有一个数据集,它返回一个名为“data_arr”的数组,该数组包含5到200个子项目,这些子项目有一个标签空间&键值对如下。

{
    "other_fields": "other_values",
    ...
    "data_arr":[
        {
           "labelspace": "A",
           "color": "red"
        },
        {
           "labelspace": "A",
           "size": 500
        },
        {
           "labelspace": "B",
           "shape": "round"
        },
    ]
}

问题是,在MongoDB中,如何存储针对快速读取而优化的数据。具体来说,会有查询:

  1. 比较键值(即两个都是红色的物体的平均大小) 和圆)。
  2. 返回符合条件的所有文件(即红色物体 大于300)。
  3. 标签空间很重要,因为一些关键名称可以重复使用。

    我打算通过索引标签空间来索引现有结构。

    我考虑将所有标签空间键/值分组到一个子文档中,如下所示:

    {
        "other_fields": "other_values",
        ...
        "data_a":
            {
               "color": "red",
               "size": 500
            },
        "data_b":
            {
               "shape": "round"
            }
    }
    

    或使用多值索引

    对其进行建模
    {
        "other_fields": "other_values",
        ...
        "data_arr":[
            {
               "labelspace": "A",
               "key": "color",
               "value": "red"
            },
            {
               "labelspace": "A",
               "key": "size",
               "value": 500
            },
            {
               "labelspace": "B",
               "key": "shape",
               "value": "round"
            },
        ]
    }
    

    这是一个需要收集的新数据集。因此,我很难建立足够的样本,以发现我冒险走错了路。

    我认为最后一个最适合索引,所以可能是最好的方法吗?

0 个答案:

没有答案