MongoDB作为非关系型数据库,其常用命令涵盖数据库、集合、文档操作及高级功能,以下是核心命令的分类整理:
一、数据库操作
创建/切换数据库
use DATABASE_NAME
若数据库不存在则自动创建,存在则切换。
查看所有数据库
show dbs 或 show databases
删除当前数据库
javascript
use DATABASE_NAME // 切换到目标库
db.dropDatabase() // 执行删除
查看当前数据库
db 或 db.getName()
二、集合操作
显式创建集合
db.createCollection("collection_name", {options})
示例:创建固定大小集合(单位:字节)
javascript
db.createCollection("logs", {capped: true, size: 1048576})
隐式创建集合
直接插入文档时自动创建集合:
db.collection_name.insert({key: value})
查看所有集合
show collections 或 show tables
删除集合
db.collection_name.drop()
返回值:true(成功)或 false(失败)
三、文档操作
- 插入文档
单条插入
db.collection.insertOne({key: value})
示例:
javascript
db.users.insertOne({name: "Alice", age: 25})
批量插入
db.collection.insertMany([{...}, {...}])
示例:
javascript
db.users.insertMany([
{name: "Bob", age: 30},
{name: "Charlie", age: 35}
]) - 查询文档
基本查询
db.collection.find({key: value})
示例:查询年龄大于25的用户
javascript
db.users.find({age: {$gt: 25}})
条件查询
$lt(小于)、$lte(小于等于)、$gt(大于)、$gte(大于等于)、$ne(不等于)
$in(包含)、$nin(不包含)
示例:查询年龄在18~30岁之间的用户
javascript
db.users.find({age: {$gte: 18, $lte: 30}})
模糊查询
使用正则表达式:
javascript
db.users.find({name: /Alice/}) // 包含"Alice"
分页查询
skip()(跳过)、limit()(限制)
示例:每页10条,查询第2页
javascript
db.users.find().skip(10).limit(10)
排序查询
sort({key: 1/-1})(1升序,-1降序)
示例:按年龄降序排列
javascript
db.users.find().sort({age: -1})
统计数量
db.collection.countDocuments({key: value})
示例:统计年龄大于25的用户数
javascript
db.users.countDocuments({age: {$gt: 25}}) - 更新文档
局部更新
db.collection.updateOne({filter}, {$set: {key: value}})
示例:将用户"Alice"的年龄改为26
javascript
db.users.updateOne({name: "Alice"}, {$set: {age: 26}})
批量更新
db.collection.updateMany({filter}, {$set: {key: value}})
示例:将所有年龄大于30的用户状态改为"senior"
javascript
db.users.updateMany({age: {$gt: 30}}, {$set: {status: "senior"}})
数值增减
使用$inc操作符:
javascript
db.users.updateOne({name: "Alice"}, {$inc: {age: 1}}) // 年龄+1 - 删除文档
条件删除
db.collection.deleteOne({filter})
示例:删除用户"Alice"
javascript
db.users.deleteOne({name: "Alice"})
批量删除
db.collection.deleteMany({filter})
示例:删除所有年龄大于30的用户
javascript
db.users.deleteMany({age: {$gt: 30}})
清空集合
db.collection.drop()
注意:此操作会删除集合及其索引,速度比deleteMany快。
四、索引管理
创建索引
db.collection.createIndex({key: 1/-1})
示例:为"name"字段创建升序索引
javascript
db.users.createIndex({name: 1})
查看索引
db.collection.getIndexes()
删除索引
db.collection.dropIndex("index_name")
五、聚合查询
使用aggregate()进行复杂数据分析:
javascript
db.orders.aggregate([
{$match: {status: "completed"}}, // 筛选已完成订单
{$group: {_id: "$customerId", total: {$sum: "$amount"}}} // 按客户分组统计消费总额
])
六、备份与恢复
备份数据库
bash
mongodump -d database_name -o /backup/path
恢复数据库
bash
mongorestore -d database_name /backup/path