集合是数据库中的一个数据容器,类似于关系型数据库中的表。在 MongoDB 中,集合存储文档,这些文档可以包含各种类型的数据。理解集合对于操作 MongoDB 数据库至关重要。
创建集合
创建集合非常简单,只需要选择一个数据库并指定集合名称即可。如果集合不存在,MongoDB 会在插入第一个文档时自动创建它。
use myDatabase // 选择或创建数据库 db.createCollection("myCollection") // 创建集合
或者,当你向集合插入第一个文档时,集合会自动创建:
db.myCollection.insertOne({"name": "Alice", "age": 25}) // 插入文档时创建集合
集合命名规则
- 集合名称不能包含空格或点号。
- 集合名称不能以
system.
开头,因为这是系统保留的前缀。 - 集合名称不能使用
$
符号,因为这是系统保留的字符。 - 集合名称不能是保留的关键字。
查看集合
你可以列出当前数据库中的所有集合:
show collections // 或者使用 db.getCollectionNames()
这将返回一个集合列表,让你了解数据库中包含哪些集合。
修改集合
虽然 MongoDB 提供了修改集合的功能,但大多数情况下,直接操作文档更为常见。不过,如果你确实需要修改集合,可以通过以下方式:
修改集合选项
你可以通过修改集合的元数据来改变它的行为。例如,你可以设置集合的存储引擎选项:
-- -------------------- ---- ------- --------------- -------- --------------- ---------- - ------------ - --------- --------- --------- - ------- ----- -- ----------- - ----- - --------- --------- ------------ ----- -- - ------ --- -- --------- -- ---- - --------- ------ -------- -- -------- ---- ------------ ----- -- -- ------- -- --- ---- --- -- --------- - - -- --
上述命令使用 collMod
命令修改集合的验证器,确保所有文档都符合特定的 JSON Schema。
删除集合
如果你不再需要某个集合,可以删除它:
db.dropCollection("myCollection")
或者使用 db.collection.drop()
方法:
db.myCollection.drop()
索引与集合
索引能够显著提高查询性能,特别是在大型集合中。你可以在创建集合时定义索引,也可以稍后为现有集合添加索引:
db.myCollection.createIndex({ "name": 1 }) // 为 name 字段创建升序索引
索引字段的选择对查询性能有直接影响,应根据实际查询需求进行设计。
聚合管道与集合
聚合管道允许你执行复杂的查询操作,如过滤、分组和排序等。集合是聚合管道操作的基础,你可以利用聚合框架对集合中的数据进行各种处理:
db.myCollection.aggregate([ { $match: { age: { $gte: 20 } } }, // 过滤年龄大于等于20岁的文档 { $group: { _id: "$name", count: { $sum: 1 } } }, // 按姓名分组,并统计每组数量 { $sort: { count: -1 } } // 按数量降序排序 ])
这个例子展示了如何使用聚合管道从集合中提取和处理数据。
总结
集合是 MongoDB 中用于存储文档的基本单位,掌握集合的创建、命名、查看、修改以及如何与索引和聚合管道结合使用,对于有效地管理和操作数据至关重要。通过合理地设计集合结构和索引,可以大幅提升应用的性能和效率。