菜鸟科技网

MongoDB命令大全有哪些常用命令?

MongoDB作为一款流行的NoSQL数据库,其命令行操作是日常开发和运维中的核心技能,以下从数据库管理、集合操作、文档管理、索引优化、聚合分析、用户权限六个维度,详细梳理常用命令及使用场景,辅以表格对比关键参数,帮助系统化掌握MongoDB命令体系。

MongoDB命令大全有哪些常用命令?-图1
(图片来源网络,侵删)

数据库管理

数据库操作是使用MongoDB的起点,主要命令包括创建/切换、查看、删除数据库,通过use命令可以切换到指定数据库,若数据库不存在则自动创建;show dbsshow databases列出所有数据库及其存储大小;db.dropDatabase()删除当前数据库,操作前需确保无重要数据,切换到testDB并创建的命令为use testDB,此时可通过db命令确认当前数据库。

集合操作

集合是文档的容器,常用命令有创建、查看、删除。createCollection()可创建集合,支持设置capped(固定大小)、size(字节限制)、max(文档数量限制)等参数,例如db.createCollection("logs", { capped: true, size: 5242880, max: 10000 })创建一个固定大小的日志集合;show collections列出当前数据库所有集合;db.collection.drop()删除指定集合,如db.users.drop()删除users集合。

文档管理

文档操作是MongoDB的核心,包括增删改查,插入数据使用insert()insertOne()/insertMany(),支持批量插入,例如db.users.insertOne({ name: "Alice", age: 25, city: "Beijing" })插入单条文档;查询数据通过find()实现,find({ age: { $gt: 20 } })查询年龄大于20的用户,findOne()返回单个文档;更新数据使用updateOne()updateMany()replaceOne(),例如db.users.updateOne({ name: "Alice" }, { $set: { age: 26 } })将Alice年龄更新为26;删除数据通过deleteOne()deleteMany(),如db.users.deleteMany({ city: "Shanghai" })删除所有上海用户,查询操作符丰富,包括比较操作符($gt$lt)、逻辑操作符($and$or)、元素操作符($exists)等,可通过db.collection.find().pretty()格式化输出结果。

索引优化

索引是提升查询性能的关键,常用命令有创建、查看、删除索引。createIndex()用于创建索引,支持单字段、复合索引、唯一索引等,例如db.users.createIndex({ name: 1 })创建升序索引,db.users.createIndex({ age: -1, city: 1 })创建复合降序索引;getIndexes()查看集合索引信息;dropIndex()删除指定索引,如db.users.dropIndex({ name: 1 }),索引可设置background后台创建、unique唯一性、sparse稀疏等选项,合理使用索引可大幅提升查询效率,但过多索引会影响写入性能。

MongoDB命令大全有哪些常用命令?-图2
(图片来源网络,侵删)

聚合分析

聚合管道用于复杂数据处理,核心命令为aggregate(),管道阶段包括$match(过滤)、$group(分组)、$project(投影)、$sort(排序)、$limit(限制数量)等,统计每个城市的用户数量并按人数降序排列:db.users.aggregate([ { $group: { _id: "$city", count: { $sum: 1 } } }, { $sort: { count: -1 } } ]),聚合管道支持嵌套和复杂表达式,是数据分析的利器。

用户权限管理

MongoDB通过角色控制访问权限,常用命令有创建用户、查看用户、删除用户。createUser()创建用户,需指定userpwdroles(如[ { role: "readWrite", db: "testDB" } ]),例如db.createUser({ user: "admin", pwd: "123456", roles: ["root"] })创建管理员;show users列出当前数据库用户;dropUser()删除用户,如db.dropUser("admin"),角色包括内置角色(如readreadWritedbAdmin)和自定义角色,需确保权限最小化原则。

关键命令对比表

操作类型 命令示例 功能说明
数据库切换 use myDB 切换到myDB,不存在则创建
集合创建 db.createCollection("logs", { capped: true, size: 1000000 }) 创建固定大小集合
文档插入 db.users.insertMany([{ name: "Bob", age: 30 }, { name: "Tom", age: 28 }]) 批量插入文档
文档查询 db.users.find({ age: { $in: [25, 28] } }).sort({ name: 1 }) 查询年龄为25或28的用户并按姓名升序排列
文档更新 db.users.updateMany({ age: { $lt: 20 } }, { $inc: { age: 1 } }) 将年龄小于20的用户年龄加1
索引创建 db.users.createIndex({ email: 1 }, { unique: true }) 创建唯一索引
聚合统计 db.orders.aggregate([ { $match: { status: "completed" } }, { $group: { _id: "$productId", total: { $sum: "$amount" } } } ]) 统计已完成订单中各产品的总金额

相关问答FAQs

Q1: 如何在MongoDB中查询嵌套文档的字段?
A1: 使用点表示法查询嵌套字段,例如文档结构为{ name: "Alice", address: { city: "Beijing", district: "Haidian" } },查询districtHaidian的文档:db.users.find({ "address.district": "Haidian" }),若需查询数组中的嵌套文档,如tags: [{ name: "tech", value: "database" }],可使用db.users.find({ "tags.name": "tech" })

Q2: MongoDB的聚合管道中如何实现分页查询?
A2: 聚合管道可通过$skip$limit实现分页,$skip跳过指定数量的文档,$limit限制返回数量,例如查询第2页(每页10条)数据:db.users.aggregate([ { $match: { age: { $gt: 20 } } }, { $skip: 10 }, { $limit: 10 } ]),注意$skip在数据量大时性能较差,推荐结合索引或$facet优化。

MongoDB命令大全有哪些常用命令?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇