MongoDB基本操作

第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}}
    ]
})
相关推荐
oradh6 分钟前
Oracle数据文件的大小和数量的限制总结
数据库·oracle·数据文件大小限制·数据文件数量限制
刘某的Cloud9 分钟前
Galera Cluster部署 mariadb 节点down机,log sequence number恢复
linux·运维·数据库·负载均衡·mariadb·集群·高可用
xiaohaiAIgeo9 分钟前
【2026年】ASHRAE 110与EN 14175通风柜测试标准对比:进口与国产品牌性能差距
java·前端·数据库·科普知识
SelectDB12 分钟前
Apache Doris 4.1 Spill to Disk:避免运行内存密集型查询发生 OOM
数据库
范什么特西1 小时前
redis题目面渣重点
数据库·redis·缓存
TDengine (老段)2 小时前
TDengine taosAdapter — 多协议网关详解
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
Nturmoils2 小时前
SQL Server 迁移到 KingbaseES:一次复杂 BI 查询的性能实测
数据库
今天AI了吗3 小时前
MCP 协议打通 AI 与国产数据库,SQL 调优全流程一站式闭环
数据库·人工智能·sql
灯澜忆梦3 小时前
【MySQL11】进阶篇 | 索引_#3使用规则
数据库·sql·mysql·性能优化
名字还没想好☜3 小时前
Go 的 sync.Cond 实战:用条件变量做等待/通知,比忙轮询省 CPU
开发语言·数据库·后端·golang·go