文档 (Document)
MongoDB 中的基本数据单元,类似于关系型数据库中的“行”,文档在数据库内以 BSON 格式 存储,通常用客户端查看时会以 JSON 格式展示。
集合 (Collection)
一组文档的集合,类似于关系型数据库中的“表”,但是 MongoDB 中的集合没有固定的模式, 所以一个集合可以包含不同结构的文档。
索引 (Index)
一种特殊的数据结构,它存储了数据库集合中的数据的一部分,以便快速查找。没有索引的 数据库查询可能需要扫描整个数据集来找到匹配的数据,效率较低。
索引的缺点是需要占用额外的存储空间,以及稍微降低写入性能(增删改),因为更新数据 时可能伴随着索引的更新。
MongoDB 支持多种类型的索引,以适应不同的查询需求:
-
单字段索引:在一个字段上建立的索引。默认情况下,MongoDB 为每个集合的
_id
字段 创建一个唯一索引。 -
复合索引:在多个字段上建立的索引,用于支持在这些字段上的组合查询。
-
多键索引:如果索引的字段是数组类型,MongoDB 会为数组中的每个元素创建索引条目, 这种索引称为多键索引。
-
全文索引:支持对文本内容进行搜索的索引,可以在一个或多个字符串字段上创建。
-
地理空间索引:用于对地理空间数据进行查询,如查找某个地点附近的地点或在某个区 域内的地点。
聚合操作
聚合操作处理多个文档并返回计算结果,可以使用聚合操作来:
- 将多个文档中的值组合在一起。
- 对分组数据执行操作,返回单一结果。
- 分析一段时间内的数据变化。
可以通过“聚合管道”或“单一的聚合方法”完成聚合操作。
聚合管道 (aggregate)
聚合管道是执行聚合的首选方法,由一个或多个处理文档的阶段组成:
- 每个阶段对输入文档执行一个操作。例如,某个阶段可以过滤文档、对文档进行分组并计 算值。
- 从一个阶段输出的文档将传递到下一阶段。
- 一个聚合管道可以返回针对文档组的结果。例如,返回总值、平均值、最大值和最小值。
以下聚合管道示例包含两个阶段,并返回按披萨名称分组的中型披萨的总订单数量:
单一目的聚合方法
单一目的聚合方法聚合单个集合中的文档,这些方法很简单,但缺乏聚合管道的功能。
方法 | 说明 |
---|---|
db.collection.estimatedDocumentCount() | 返回集合或视图中文档的近似数量 |
db.collection.count() | 返回集合或视图中文档的数量 |
db.collection.distinct() | 返回具有指定字段的不同值的文档数组 |