将一组名称值对放在单个字段中而不是在各自的字段中进行的任何权衡

时间:2011-08-11 08:16:19

标签: mongodb name-value

我们有一组用户数据,由一个文档中表示的名称/值对组成。我们正在使用mongodb存储该数据,并且正在考虑将名称/值对的文档作为字符串放在集合中的单个字段中,而不是为mongo中的每个名称/值对创建单独的字段并直接放置每个对进入自己的领域。

有没有人对前者为什么不好主意有任何意见。我们不期望每个查询有很多记录,每条记录可能有大约100个名称/值对

2 个答案:

答案 0 :(得分:2)

好吧,我认为将它存储为单个字符串没有任何好处。文档大小将大致相似,您将无法索引单个对的名称字段,并且您无法查询是否存在特定的名称/值对。另一方面,我想不到一个好处。唯一真正的选择是,是否这样做:

{
    name1: value1,
    name2: value2,
    name3: value3
}

[
    {
        name: name1,
        value: value1
    },
    {
        name: name2,
        value: value2
    },
    {
        name: name3,
        value: value3
    }
]

答案 1 :(得分:0)

如果您需要搜索“name = xxx”和“value =”xxx“的位置,建议对后一种情况编制索引的方法是什么。应该将整个子文档编入索引,还是每个字段(例如”名称“) “和”价值“?