MongoDB 是一个高性能、开源的 NoSQL 数据库,使用文档存储模型,数据以 BSON(二进制 JSON)格式存储,其灵活的数据结构和强大的查询功能使其在 Web 开发、大数据处理等领域广泛应用。mongo
命令是 MongoDB 的交互式 JavaScript shell,用于与数据库进行交互,执行查询、管理数据等操作,本文将详细介绍 mongo
命令的使用方法,包括连接数据库、基本操作、高级查询以及常用命令。

连接到 MongoDB
使用 mongo
命令连接到 MongoDB 实例的基本语法为 mongo [options] [host[:port]] [database] [username]
,连接到本地默认端口 27017 的 MongoDB 实例,可以使用 mongo
命令;连接到远程服务器(如 IP 为 192.168.1.100,端口为 27017)的 test
数据库,则可以使用 mongo 192.168.1.100:27017/test
,如果需要身份验证,可以在命令后添加用户名,mongo admin -u username -p password
,连接成功后,shell 会显示当前数据库版本和连接信息,并进入 >
提示符状态。
数据库和集合操作
在 mongo
shell 中,可以使用 use
命令切换或创建数据库。use mydb
会切换到 mydb
数据库,如果该数据库不存在,则在首次插入数据时自动创建,集合(类似于关系型数据库中的表)无需显式创建,当插入第一个文档时会自动生成,要查看当前数据库,可以使用 db
命令;列出所有数据库可使用 show dbs
;列出当前数据库的所有集合可使用 show collections
,删除数据库使用 db.dropDatabase()
,删除集合使用 db.myCollection.drop()
。
文档的基本操作
文档是 MongoDB 中数据的基本单位,类似于 JSON 对象,插入文档使用 insertOne()
或 insertMany()
方法。db.users.insertOne({name: "Alice", age: 25, city: "Beijing"})
插入单个文档,而 db.users.insertMany([{name: "Bob", age: 30}, {name: "Charlie", age: 28}])
插入多个文档,查询文档使用 find()
方法,db.users.find()
查询所有文档,db.users.find({age: 25})
查询年龄为 25 的用户,更新文档使用 updateOne()
或 updateMany()
,db.users.updateOne({name: "Alice"}, {$set: {age: 26}})
将 Alice 的年龄更新为 26,删除文档使用 deleteOne()
或 deleteMany()
,db.users.deleteOne({age: 28})
删除年龄为 28 的用户。
查询操作的高级用法
find()
方法支持丰富的查询条件,可以使用比较运算符(如 $gt
、$lt
、$gte
、$lte
)进行范围查询,db.users.find({age: {$gt: 25}})
查询年龄大于 25 的用户,逻辑运算符(如 $and
、$or
、$not
)用于组合多个条件,db.users.find({$or: [{age: 25}, {city: "Shanghai"}]})
查询年龄为 25 或所在城市为 Shanghai 的用户,正则表达式可用于模糊查询,db.users.find({name: /^A/})
查询姓名以 A 开头的用户,排序使用 sort()
方法,db.users.find().sort({age: 1})
按年龄升序排列,-1
表示降序,分页使用 limit()
和 skip()
,db.users.find().skip(10).limit(5)
跳过前 10 条数据,返回接下来的 5 条。

索引和聚合
索引可以显著提高查询性能,创建索引使用 createIndex()
方法,db.users.createIndex({name: 1})
为 name
字段创建升序索引,查看集合的索引使用 db.users.getIndexes()
,删除索引使用 db.users.dropIndex({name: 1})
,聚合操作使用 aggregate()
方法,支持复杂的数据处理,统计每个城市的用户数量:db.users.aggregate([{$group: {_id: "$city", count: {$sum: 1}}}])
,聚合管道包括多个阶段(如 $match
、$group
、$sort
),可以组合使用实现复杂逻辑。
其他常用命令
mongo
shell 还提供了许多实用命令。db.stats()
查看当前数据库的统计信息(如文档数量、数据大小);db.collection.stats()
查看集合的统计信息;db.collection.count()
统计文档数量(已被 countDocuments()
替代);db.collection.distinct("field")
返回指定字段的唯一值;db.collection.createIndex({field: "text"})
创建全文索引,支持文本搜索;db.collection.mapReduce()
实现分布式数据处理(新版推荐使用聚合框架)。
相关问答 FAQs
如何在 mongo
shell 中查看当前数据库的所有索引?
答:可以使用 db.collectionName.getIndexes()
命令,collectionName
是集合的名称。db.users.getIndexes()
会返回 users
集合的所有索引信息,包括索引名称、键、类型等。
如何在 mongo
shell 中执行批量插入操作?
答:可以使用 insertMany()
方法批量插入文档。db.users.insertMany([{name: "User1", age: 20}, {name: "User2", age: 21}])
会一次性插入两个文档,该方法接受一个文档数组作为参数,并返回插入结果,如插入的文档数量和是否重复等。
