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:从数组删除元素

七、实用技巧

  1. 统计文档数量
1db.users.countDocuments()
2db.users.countDocuments({ age: { $gt: 25 } })
  1. 去重查询
1db.users.distinct("city")
  1. 排序
1db.users.find().sort({ age: 1 })      // 升序
2db.users.find().sort({ age: -1 })     // 降序
  1. 游标操作
1const cursor = db.users.find()
2while (cursor.hasNext()) {
3    printjson(cursor.next())
4}

这些是 MongoDB 最基础的操作,掌握这些就可以开始使用 MongoDB 进行基本的数据管理了。