在文档数据库中,集合充当容器,将相关的文档组合在一起,类似于关系数据库中表组织行的方式。 每个集合包含通常具有共同目的或结构的文档,但与关系表不同,它们不强制执行严格的模式。 例如,在 MongoDB 中,一个集合可能存储产品数据,其中每个文档代表一个产品,包含诸如 name
、price
和 category
等字段。 但是,同一集合中的文档在结构上可能会有所不同——有些可能包含可选字段,如 discount
,而另一些则省略它们。 这种灵活性使开发人员能够随着时间的推移调整数据模型,而无需进行数据库范围的模式更改。
集合简化了数据组织和查询。 通过对相关文档进行分组,查询可以定位到特定的集合,从而缩小扫描数据的范围并提高性能。 例如,users
集合可能存储所有用户配置文件,从而可以进行诸如“查找 last_login
日期早于 30 天的用户”之类的查询。 集合还支持索引,从而加快搜索速度。 在 Couchbase 中,您可以在 customers
集合中的 email
字段上创建一个索引,以优化登录查找。 此外,集合通常与访问控制规则保持一致,允许管理员限制权限(例如,允许对 reports
集合进行读取访问,但不允许写入访问)。
虽然集合提供了结构,但它们的使用方式与关系表不同。 开发人员必须决定集合的粒度——太多可能会使管理变得复杂,而太少可能会降低查询效率。 一种常见的方法是对一起查询或共享生命周期模式的文档进行分组。 例如,电子商务应用程序可以使用单独的 orders
和 inventory
集合来将事务数据与库存更新隔离。 某些文档数据库(如 MongoDB)还支持子集合或嵌套文档,以用于分层数据。 但是,过度嵌套会导致性能问题,因此重要的是在灵活性和实际设计之间取得平衡。