一、数据库操作
1. 展示所有非空数据库
show dbs
该命令会列出所有包含数据的数据库。
2. 显示当前数据库
db
此命令用于查看当前正在使用的数据库。
3. 切换或创建数据库
use 数据库名
如果指定的数据库不存在,MongoDB 会在首次插入数据时自动创建它。如果已存在,则直接切换到该数据库。
4. 删除数据库
db.dropDatabase()
此命令会删除当前数据库及其所有数据。
二、集合操作
1. 展示所有集合
show collections
该命令会列出当前数据库中的所有集合。
2. 创建集合
db.createCollection(集合名)
通过此命令可以创建一个新的集合。
3. 删除集合
db.集合名.drop()
此命令用于删除指定的集合。
三、文档操作
1. 查询文档
(1)查询所有文档
db.集合名.find({})
此命令会返回集合中的所有文档。
(2)查询单个文档
db.集合名.findOne({})
该命令用于获取集合中的第一个文档。
2. 插入文档
(1)插入单个文档
db.集合名.insertOne({})
此命令用于插入一个文档。
(2)插入多个文档
db.集合名.insertMany([{},{},{}])
该命令可以一次性插入多个文档。
3. 修改文档
(1)修改单个文档
db.集合名.updateOne({}, {$set: {}})
此命令用于修改第一个匹配的文档。
(2)修改多个文档
db.集合名.updateMany({}, {$set: {}})
该命令可以修改所有匹配的文档。
4. 删除文档
(1)删除单个文档
db.集合名.deleteOne({})
此命令用于删除第一个匹配的文档。
(2)删除多个文档
db.集合名.deleteMany({})
该命令可以删除所有匹配的文档。
四、进阶查询
1. 运算符
(1)比较运算符
-
查询年龄大于 30 的文档:
find({"age": {"$gt": 30}})
-
查询年龄大于等于 20 的文档:
find({"age": {"$gte": 20}})
-
查询年龄小于 30 的文档:
find({"age": {"$lt": 30}})
-
查询年龄小于等于 30 的文档:
find({"age": {"$lte": 30}})
-
查询年龄等于 30 的文档:
find({"age": 30})
-
查询年龄不等于 30 的文档:
find({"age": {"$ne": 30}})
(2)逻辑运算符
-
and:查询年龄等于 30 且名字不等于 "t3" 的文档:
find({"age": 30, "name": {"$ne": "t3"}})
或者:
find({"$and": [{"age": {"$gt": 20}}, {"age": {"$lt": 30}}]})
-
or:查询年龄等于 20 或 25 的文档
find({"$or": [{"age": 20}, {"age": 25}]})
-
not:查询年龄不大于 25 的文档
find({"age": {"$not": {"$gt": 25}}})
(3)范围运算符
-
查询年龄在 25 到 35 之间的文档
find({"age": {"$gt": 25, "$lt": 35}})
(4)成员运算符
-
查询年龄在 [20, 25] 范围内的文档
find({"age": {"$in": [20, 25]}})
2. 映射
-
查询时隐藏
_id
字段find({}, {"_id": 0})
3. 排序
-
按年龄降序排序
find({}, {"_id": 0}).sort([("age", pymongo.DESCENDING)])
-
按年龄和名字降序排序
find({}, {"_id": 0}).sort([("age", pymongo.DESCENDING), ("name", pymongo.DESCENDING)])
4. 分页
-
查询前 2 条记录
find({}, {"_id": 0}).limit(2)
-
跳过前 2 条记录,查询第 3 条记录
find({}, {"_id": 0}).skip(2).limit(1)
五、用户管理
1. 创建用户
-
使用客户端创建用户后,需要重启服务。
2. 连接认证
-
使用连接字符串进行认证
f"mongodb://{user}:{password}@{host}/database_name?authSource=test"
3. 参数认证
-
使用参数进行认证
host="localhost", port=27017, username='zzy', password='123456', authSource='test' # 认证数据库,通常是admin
4. 命令行认证
-
使用命令行进行认证
mongo -u zzy -p -authenticationDatabase test