集合是数据库中的一个数据容器,类似于关系型数据库中的表。在 MongoDB 中,集合存储文档,这些文档可以包含各种类型的数据。理解集合对于操作 MongoDB 数据库至关重要。
创建集合
创建集合非常简单,只需要选择一个数据库并指定集合名称即可。如果集合不存在,MongoDB 会在插入第一个文档时自动创建它。
use myDatabase // 选择或创建数据库
db.createCollection("myCollection") // 创建集合或者,当你向集合插入第一个文档时,集合会自动创建:
db.myCollection.insertOne({"name": "Alice", "age": 25}) // 插入文档时创建集合集合命名规则
- 集合名称不能包含空格或点号。
- 集合名称不能以
system.开头,因为这是系统保留的前缀。 - 集合名称不能使用
$符号,因为这是系统保留的字符。 - 集合名称不能是保留的关键字。
查看集合
你可以列出当前数据库中的所有集合:
show collections // 或者使用 db.getCollectionNames()
这将返回一个集合列表,让你了解数据库中包含哪些集合。
修改集合
虽然 MongoDB 提供了修改集合的功能,但大多数情况下,直接操作文档更为常见。不过,如果你确实需要修改集合,可以通过以下方式:
修改集合选项
你可以通过修改集合的元数据来改变它的行为。例如,你可以设置集合的存储引擎选项:
// www.javascriptcn.com code example
db.runCommand({
collMod: "myCollection",
validator: { $jsonSchema: {
bsonType: "object",
required: [ "name", "age" ],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
},
age: {
bsonType: "int",
minimum: 0,
maximum: 100,
description: "must be an integer in [0, 100] and is required"
}
}
}}
})上述命令使用 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 中用于存储文档的基本单位,掌握集合的创建、命名、查看、修改以及如何与索引和聚合管道结合使用,对于有效地管理和操作数据至关重要。通过合理地设计集合结构和索引,可以大幅提升应用的性能和效率。