教程 mongodb tutorial

引用与嵌套文档的选择

MongoDB 支持两种数据关系建模方式:嵌套文档和引用。选择合适的方式有助于提高查询效率和维护简便性。

嵌套文档(Embedding)

将相关数据直接嵌入主文档中,适用于紧密关联且经常一起访问的数据。

优点:

  • 查询简单,避免跨集合操作。
  • 读性能高,减少多次查询。
  • 保持数据一致性方便。

缺点:

  • 嵌套过深可能导致文档膨胀,超出 16MB 限制。
  • 更新嵌套数据可能复杂。

示例:

json
{
  "_id": 1,
  "name": "Alice",
  "orders": [
    { "order_id": 101, "amount": 200 },
    { "order_id": 102, "amount": 150 }
  ]
}

`

引用(Referencing)

通过存储关联文档的 _id,实现数据关联,适合关系复杂或数据共享的场景。

优点:

  • 文档体积小,易于扩展。
  • 支持复杂关系和多对多关联。
  • 数据更新独立,减少冗余。

缺点:

  • 查询时需要额外的连接操作(聚合或多次查询)。
  • 保证数据一致性较复杂。

示例:

json
// 用户文档
{
  "_id": 1,
  "name": "Alice"
}

// 订单文档
{
  "_id": 101,
  "user_id": 1,
  "amount": 200
}

选择建议

  • 频繁联合访问且数据量较小,优先考虑嵌套文档。
  • 数据关系复杂、多对多或共享,选择引用。
  • 注意文档大小限制,避免单个文档过大。
  • 结合业务场景灵活设计,平衡性能与维护。

合理使用引用和嵌套文档设计,能有效提升 MongoDB 应用的性能和可维护性。