【问题标题】:What is the better way to store an arbitrary key:value array in mongodb在mongodb中存储任意键:值数组的更好方法是什么
【发布时间】:2010-10-30 02:13:09
【问题描述】:

我有一个键值数组

{val1: [{性别:男性},{年龄:23​​},{最喜欢的颜色:红色}] }

关于这个数组的问题在于,它绝不是结构化的,我也无法保证再次看到相同的键值。例如,我可以看到以下 val2

{val2: [{sex:male}, {hair-color:red}, {height:6'1"}] }

我的问题是将这些键中的每一个作为 mongo 中的一列是否更好,或者我应该将它们保存在一个数组中?我知道使用 mongodb 可以创建任意数量的列,因此理论上任何一种方式都可以。如果我想查询一个数组是否包含值为 'male' 的 'sex' 键,在我将值保存在对象的嵌套数组中的示例中,这是否可行?

【问题讨论】:

    标签: schema mongodb


    【解决方案1】:

    valX 到底是什么?我只会使用常规的“列”。

    john : { gender:"male", age:23, favorite-color:red }
    bob : { gender:"male", age:25, favorite-color:blue }
    susan : { gender:"female", age:20, favorite-color:yellow }
    

    您可以使用基本查询针对这 3 个字段进行搜索。

    【讨论】:

    • valx 会很随意。问题是性别、年龄或任何其他属性可能不在任何其他记录中。所以想知道即使它可能只使用一次,将它设为一列是否仍然有意义。
    • 嗯,这就是没有架构的好处。每条记录不必匹配其下方或上方的记录。您说性别、年龄和其他人可能不会出现在任何其他记录中。那很完美。因此,您仍然可以将其存储为记录。如果您查询让我们说“性别是男性”,您只会得到记录的性别值为男性的结果。
    猜你喜欢
    • 2013-10-17
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多