mongo $与成对的嵌套文档相对

时间:2014-06-03 21:59:16

标签: algorithm mongodb

有没有人使用名称的对使用经验:布尔与数字置换类型表示,并且最好如此显示。以下是单个记录/行的一部分。

{ ... {status { working: true, married: false }} ...}

{ ... {status: 3} ... }

在后者中,我们需要一个排列 (不工作+未婚= 1;工作+未婚= 2;不工作+已婚= 3;工作+已婚= 4)

每个人都需要各自的查询:

{status.married: true}

VS

{status: {$in : [3,4]}}

进一步考虑的是,大多数查询不是单个短语,而是{status.married: true}, {status.working: true}{$or: [{status.married: true}, {status.working: true}]}

之类的联合/交集

后一种形式更简单{status: {$in : [2,3,4]}}

考虑因素包括单一与两个指数。

我不确定什么是更可读的?重构置换风格似乎更容易。但是客户需要知道正确的顺序。

1 个答案:

答案 0 :(得分:1)

布尔方法的优点:

  1. 查询是明确/可读的
  2. 文件可读/不言自明
  3. 支持更灵活的查询(使用数字置换类型的所有查询必须使用相等/不等式或" $ in")
  4. 我实际上认为这是更容易重构,因为它不是基于数据表示的隐式规则(例如字段的顺序)
  5. 数字置换类型的优点:

    1. 查询更短(可以说更简单?)(但不能自我解释)
    2. 只有一个字段可以在
    3. 上创建索引
    4. 文件较小
    5. 我不认为这是一个固有的速度优势。这取决于您运行的数据和actaul查询。

      考虑您真正关心的上述哪一项,并根据此做出决定。

      我倾向于始终采用明确的(" -is-better-than-implicit")。