MongoDB 基础操作
MongoDB 是一个 NoSQL 数据库,以文档形式存储数据。以下是 MongoDB 的基础操作:
一、数据库操作
1. 选择/创建数据库
1use database_name 2// 如果数据库不存在,MongoDB 会在第一次插入数据时创建
2. 查看所有数据库
1show dbs
3. 删除当前数据库
1db.dropDatabase()
二、集合(表)操作
1. 创建集合
1db.createCollection("collection_name") 2// 或直接插入文档自动创建
2. 查看集合
1show collections 2// 或 3show tables
3. 删除集合
1db.collection_name.drop()
三、文档(记录)操作
1. 插入文档
1// 插入单个文档 2db.users.insertOne({ 3 name: "张三", 4 age: 25, 5 email: "zhangsan@example.com" 6}) 7 8// 插入多个文档 9db.users.insertMany([ 10 { name: "李四", age: 30 }, 11 { name: "王五", age: 28 } 12])
2. 查询文档
1// 查询所有文档 2db.users.find() 3 4// 格式化显示 5db.users.find().pretty() 6 7// 条件查询 8db.users.find({ age: 25 }) 9db.users.find({ age: { $gt: 25 } }) // 年龄大于25 10 11// 查询单个文档 12db.users.findOne({ name: "张三" }) 13 14// 查询指定字段 15db.users.find({}, { name: 1, age: 1 }) // 只返回name和age字段 16 17// 比较操作符 18db.users.find({ age: { $lt: 30 } }) // 小于 19db.users.find({ age: { $lte: 30 } }) // 小于等于 20db.users.find({ age: { $ne: 25 } }) // 不等于 21 22// 逻辑操作符 23db.users.find({ $or: [{ age: 25 }, { age: 30 }] }) 24db.users.find({ age: { $in: [25, 30] } }) // 在数组中 25 26// 限制和跳过 27db.users.find().limit(5) // 限制5条 28db.users.find().skip(10) // 跳过前10条
3. 更新文档
1// 更新单个文档 2db.users.updateOne( 3 { name: "张三" }, 4 { $set: { age: 26 } } 5) 6 7// 更新多个文档 8db.users.updateMany( 9 { age: { $lt: 30 } }, 10 { $set: { status: "young" } } 11) 12 13// 替换文档 14db.users.replaceOne( 15 { name: "张三" }, 16 { name: "张三", age: 27, city: "北京" } 17) 18 19// 自增操作 20db.users.updateOne( 21 { name: "张三" }, 22 { $inc: { age: 1 } } // 年龄加1 23) 24 25// 添加字段 26db.users.updateOne( 27 { name: "张三" }, 28 { $set: { city: "北京" } } 29)
4. 删除文档
1// 删除单个文档 2db.users.deleteOne({ name: "张三" }) 3 4// 删除多个文档 5db.users.deleteMany({ age: { $lt: 25 } })
四、索引操作
1. 创建索引
1// 创建单字段索引 2db.users.createIndex({ name: 1 }) // 1升序,-1降序 3 4// 创建复合索引 5db.users.createIndex({ name: 1, age: -1 }) 6 7// 创建唯一索引 8db.users.createIndex({ email: 1 }, { unique: true })
2. 查看索引
1db.users.getIndexes()
3. 删除索引
1db.users.dropIndex("index_name")
五、聚合操作
1// 分组统计 2db.users.aggregate([ 3 { $group: { _id: "$city", count: { $sum: 1 } } } 4]) 5 6// 匹配和分组 7db.users.aggregate([ 8 { $match: { age: { $gt: 25 } } }, 9 { $group: { _id: "$city", avgAge: { $avg: "$age" } } } 10])
六、常用操作符
比较操作符
$eq:等于$ne:不等于$gt:大于$gte:大于等于$lt:小于$lte:小于等于$in:在数组中$nin:不在数组中
逻辑操作符
$and:与$or:或$not:非$nor:或非
字段更新操作符
$set:设置字段值$unset:删除字段$inc:自增$push:向数组添加元素$pull:从数组删除元素
七、实用技巧
- 统计文档数量
1db.users.countDocuments() 2db.users.countDocuments({ age: { $gt: 25 } })
- 去重查询
1db.users.distinct("city")
- 排序
1db.users.find().sort({ age: 1 }) // 升序 2db.users.find().sort({ age: -1 }) // 降序
- 游标操作
1const cursor = db.users.find() 2while (cursor.hasNext()) { 3 printjson(cursor.next()) 4}
这些是 MongoDB 最基础的操作,掌握这些就可以开始使用 MongoDB 进行基本的数据管理了。