MongoDB 是一个基于分布式文件存储的开源数据库系统,它使用 JSON 类似的文档结构来存储数据。下面是一些 MongoDB 中常用的命令和操作:
连接到 MongoDB
-
使用
mongosh
命令行工具连接到本地 MongoDB 服务器:shellmongosh
-
连接到远程 MongoDB 服务器:
shellmongosh <hostname>:<port>/<database> -u <username> -p <password>
数据库操作
-
显示所有数据库:
javascriptshow dbs
-
切换/选择数据库:
javascriptuse <database_name>
-
创建或切换到新数据库(如果不存在则创建):
javascriptuse new_database
集合操作
-
显示当前数据库中所有的集合:
javascriptshow collections
-
创建集合(通常不需要手动创建,插入文档时会自动创建):
javascriptdb.createCollection("collection_name")
-
删除集合:
javascriptdb.collection_name.drop()
文档操作
-
插入单个文档:
javascriptdb.collection_name.insertOne({ key: value, ... })
-
插入多个文档:
javascriptdb.collection_name.insertMany([{ key1: value1, ... }, { key2: value2, ... }])
-
查询文档:
javascriptdb.collection_name.find({ key: value, ... }).pretty() // pretty() 使输出更易读
-
更新单个文档:
javascriptdb.collection_name.updateOne({ key: value, ... }, { $set: { key: newValue, ... }})
-
更新多个文档:
javascriptdb.collection_name.updateMany({ key: value, ... }, { $set: { key: newValue, ... }})
-
删除单个文档:
javascriptdb.collection_name.deleteOne({ key: value, ... })
-
删除多个文档:
javascriptdb.collection_name.deleteMany({ key: value, ... })
其他常用命令
-
查看帮助信息:
javascripthelp
-
获取当前使用的数据库名称:
javascriptdb.getName()
-
退出 MongoDB shell:
javascriptexit
拓展命令
- 分页
javascript
var pageSize = 10; // 每页显示的记录数
var page = 2; // 页码,从1开始
var skipCount = (page - 1) * pageSize; // 计算需要跳过的记录数
db.users.find().skip(skipCount).limit(pageSize).pretty();
- 查看索引
javascript
db.users.getIndexes()
- 查找users集合里面uid字段重复的数据
javascript
db.users.aggregate([
{
$group: {
_id: "$uid",
count: { $sum: 1 }
}
},
{
$match: {
count: { $gt: 1 }
}
}
])
- 查找所有uid有值的数量
javascript
db.users.countDocuments({ uid: { $exists: true, $ne: null } })
- uid去重后的数据
javascript
db.users.distinct("uid")