algorithm - mongo $in 反对成对的嵌套文档

标签 algorithm mongodb

有没有人有使用 name:boolean 与 numeric permutation-type 表示的对的工作经验,并且最好这样显示。以下是单个记录/行的一部分。

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

对比

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

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

然后每个都需要他们各自的查询:

{status.married: true}

对比

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

进一步的考虑是,大多数查询将不是单个短语,而是并集/交集,例如 {status.married: true}、{status.working: true}{$或者:[{status.married: true}, {status.working: true}]}

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

考虑因素包括单个索引与两个索引。

我不确定什么更“可读”重构排列样式似乎更容易。但客户需要知道正确的顺序。

最佳答案

bool 方法的优点:

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

数字排列类型的优点:

  1. 查询更短(并且可以说更简单?)(但不是不言自明的)
  2. 只有一个字段可以创建索引
  3. 文件较小

我认为两者之间并没有固有的速度优势。这取决于您运行的数据和实际查询。

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

我倾向于使用显式(“-比隐式更好”)。

关于algorithm - mongo $in 反对成对的嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24025681/

相关文章:

java - MongoDB java连接问题

当有标准时,node.js mongodb 投影会被忽略

mongodb - mongoid : when and how often should I run rake db:mongoid:create_indexes? 中的索引

postgresql - activerecord 和 mongo/mongo-mapper 桥

c - Dijkstra在C语言中的最短路径算法——改变参数问题

java - 在 Java Swing 中计算 JPanel 中两点之间路径的算法

python - 对数生成的项目值

java - 在同一 JVM 中检测到多个正在运行的 SparkContext - Java Spark

c++ - 试图解析从输入文件中读取的一行

python - 查找具有彼此最接近的 K 个元素的子集