1. MongoDB基础查询操作
1.1 查询文档
MongoDB查询操作使用find()
方法,可指定查询条件,如:
db.collection_name.find(query, projection)
query参数指定筛选条件,如果查询全部则传递空对象{}
。
projection参数是可选的,用于指定结果包含或排除的字段。
例如,查询所有文档:
db.user.find({})
查询条件可以用多种逻辑运算符组合,例如:
db.user.find(
{
$or: [
{ name: "Bob" },
{ age: { $lt: 30 } }
]
}
)
上面的例子查询name
为"Bob"或age
小于30的文档。
1.2 限制查询结果数量
MongoDB查询操作默认返回满足条件的所有文档。如果要限制结果数量,可以使用limit()
方法。
db.user.find().limit(5)
上面的例子查询并返回最多五个文档。
1.3 排序查询结果
默认排序是返回文档插入的顺序。可以通过sort()
方法按照指定字段排序。
db.user.find().sort({ age: -1 })
上面的例子按age
字段降序排列文档。
1.4 聚合查询
聚合查询用于处理数据并返回计算结果。常用聚合方法包括:
count()
: 返回文档数量
sum()
: 返回文档字段的和
avg()
: 返回文档字段的平均值
min()
: 返回文档字段的最小值
max()
: 返回文档字段的最大值
例如,查询所有文档数量:
db.user.count()
聚合查询可以通过aggregate()
方法执行,其参数是聚合管道数组。聚合管道包括多个阶段,每个阶段用于处理数据并输出结果。
db.user.aggregate( [ { $group: { _id: "$type", count: { $sum: 1 } } } ] )
上面的例子根据type
字段聚合数据并输出每个类型的文档数量。
2. MongoDB索引操作
2.1 创建索引
索引可以提高查询效率,MongoDB支持多种类型索引。可以使用createIndex()
方法创建索引。
db.users.createIndex( { type: 1 } )
上面的例子创建一个基于type
字段的升序索引。
2.2 优化查询
索引可以通过explain()
方法来优化查询。当执行查询时,使用explain()
方法可以输出查询详细信息,包括是否使用索引和执行计划。
db.users.find( { type: "admin" } ).explain()
上面的例子输出查询type
字段为"admin"的文档的详细信息。
2.3 索引类型
MongoDB支持多种类型索引,常用索引类型包括:
单键索引:对一个字段创建索引
复合索引:对多个字段创建索引
全文索引:基于文本内容创建索引
地理空间索引:基于地理空间位置创建索引
例如,创建全文索引:
db.articles.createIndex( { content: "text" } )
上面的例子按文档内容content
创建全文索引。
2.4 删除索引
使用dropIndex()
方法删除索引。
db.users.dropIndex( { type: 1 } )
上面的例子删除名为"type"的索引。
3. 总结
MongoDB是一种灵活、可扩展的NoSQL数据库,支持各种查询和索引操作。通过正确使用查询和索引,可以提高查询效率并优化数据存储。