第2章:MongoDB基本操作
2.1 连接与基本命令
2.1.1 连接方式
bash
复制代码
# 命令行连接
mongo
# 指定主机和端口
mongo --host localhost --port 27017
# 使用认证连接
mongo -u username -p password --authenticationDatabase admin
2.1.2 数据库操作
javascript
复制代码
// 查看所有数据库
show dbs
// 创建/切换数据库
use myDatabase
// 查看当前数据库
db
// 删除数据库
db.dropDatabase()
2.2 文档增删改查
2.2.1 插入文档
javascript
复制代码
// 单文档插入
db.users.insertOne({
name: "张三",
age: 30,
email: "zhangsan@example.com",
tags: ["程序员", "90后"]
})
// 批量插入
db.users.insertMany([
{name: "李四", age: 25},
{name: "王五", age: 35}
])
// 使用save方法(如果_id存在则更新)
db.users.save({
_id: ObjectId("..."),
name: "赵六",
age: 40
})
2.2.2 查询文档
javascript
复制代码
// 查询所有文档
db.users.find()
// 条件查询
db.users.find({age: {$gt: 25}})
// 查询特定字段
db.users.find(
{age: {$gt: 25}},
{name: 1, age: 1, _id: 0}
)
// 复杂查询
db.users.find({
$or: [
{age: {$lt: 30}},
{name: /张/}
]
})
2.2.3 更新文档
javascript
复制代码
// 更新单个文档
db.users.updateOne(
{name: "张三"},
{$set: {age: 31}}
)
// 更新多个文档
db.users.updateMany(
{age: {$lt: 30}},
{$inc: {age: 1}}
)
// 替换整个文档
db.users.replaceOne(
{name: "张三"},
{name: "张三", age: 32, city: "北京"}
)
2.2.4 删除文档
javascript
复制代码
// 删除单个文档
db.users.deleteOne({name: "张三"})
// 删除多个文档
db.users.deleteMany({age: {$lt: 25}})
2.3 游标操作
2.3.1 游标基本使用
javascript
复制代码
// 限制返回数量
db.users.find().limit(5)
// 跳过前几条
db.users.find().skip(3).limit(5)
// 排序
db.users.find().sort({age: 1}) // 升序
db.users.find().sort({age: -1}) // 降序
2.3.2 高级游标
javascript
复制代码
// 计数
db.users.countDocuments({age: {$gt: 25}})
// 去重
db.users.distinct("city")
2.4 常用运算符
2.4.1 比较运算符
javascript
复制代码
// 等于、大于、小于
db.products.find({price: {$eq: 100}})
db.products.find({price: {$gt: 100}})
db.products.find({price: {$gte: 100, $lte: 500}})
2.4.2 逻辑运算符
javascript
复制代码
// 与、或、非
db.inventory.find({
$and: [
{status: "A"},
{qty: {$lt: 30}}
]
})
db.inventory.find({
$or: [
{status: "A"},
{qty: {$lt: 30}}
]
})