在 mongoid 中使用嵌入文档与数组相比有何优缺点?

per*_*nce 3 mongodb mongoid

当您可以简单地使用数组数据类型时,使用嵌入文档的优点和缺点是什么?两者对我来说都很相似(我无法通过谷歌搜索在线找到任何信息)。请提供示例案例!

Ste*_*nie 5

就数据结构而言,您可以将嵌入文档视为散列或字典......而数组是值列表。

使用 MongoDB 中的嵌入文档:

  • 嵌入文档具有命名字段,并且可以嵌入其他文档以实现丰富的数据表示
  • 您可以使用点符号直接引用字段
  • 在嵌入文档字段上创建索引仅索引该字段
  • 您可以使用字段选择来检索字段的子集。

使用 MongoDB 中的数组:

  • 您可以使用、、和 等运算来操作数组。$push$pop$pull$addToSet
  • $all您可以使用, $in,等运算符来匹配数组值$nin
  • 您还可以使用多键索引
  • 在数组元素上创建索引会索引数组的每个元素。
  • 您可以使用$slice运算符来检索数组的子集。

Mongoid 的关系概念表达了嵌入文档和数组的几种不同组合:

  • embeds_one - 单个嵌入文档
  • embeds_many - 嵌入文档的数组