MongoDB 4 之后的版本,也就是 xx 年之后,被各大 Linux 发行版从仓库移除,所以不能直接使用包管理器安装。
# 安装
sudo apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update
sudo apt-get install -y mongocli
# 更新
sudo apt-get install --only-upgrade mongocli
# 验证安装
mongocli --version
可以将 MongoDB 的更新源加入系统,我觉得有点麻烦:
- 每次 apt update 都要检查这个更新源,影响执行速度
- 每次系统升级都要手动修改 source.list 文件,重新启用这个源
如果有的选,我还是更喜欢直接下载安装包。
-> % wget https://downloads.mongodb.com/compass/mongosh.json
-> % cat mongosh.json | jq '[.versions[0].downloads[] | select(.arch == "x86_64" and .distro == "deb")] | first.archive | {url, sha256}' > mongosh-tiny.json
# {
# "url": "https://downloads.mongodb.com/compass/mongodb-mongosh_2.5.9_amd64.deb",
# "sha256": "8186240604fa567e041d73a2ff2ede2268b0e89617942c4fa80604f78d01f790"
# }
url=$(cat mongosh-tiny.json | jq -r .url)
sha256=$(cat mongosh-tiny.json | jq -r .sha256)
filename=$(echo $url | awk -F/ '{print $NF}')
# 下载
wget $url
# 验证
if [ "$sha256" = "$(sha256sum $filename | cut -d ' ' -f1)" ]; then echo "验证结果:\033[49;92m通过\033[0m"; else echo "验证结果:\033[49;91m失败\033[0m"; fi;
# 安装
sudo gdebi $filename
mongosh 基本用法回顾
-
连接数据库
mongosh "mongodb://localhost:27017" # 连接本地 mongosh "mongodb://user:pass@host:27017/db" # 带认证 -
数据库操作
show dbs // 列出所有数据库 use mydb // 切换/创建数据库 db.dropDatabase() // 删除当前数据库 -
集合操作
show collections // 显示所有集合 db.createCollection("users") // 创建集合 db.users.drop() // 删除集合 -
文档 CRUD
// 插入 db.users.insertOne({ name: "John", age: 25 }); db.users.insertMany([{ name: "Alice" }, { name: "Bob" }]); // 查询 db.users.find(); // 查询所有 db.users.findOne({ age: { $gt: 20 } }); // 条件查询 // 更新 db.users.updateOne({ name: "John" }, { $set: { age: 26 } }); // 删除 db.users.deleteOne({ name: "John" }); -
索引管理
db.users.createIndex({ name: 1 }); // 创建索引 db.users.getIndexes(); // 查看索引 -
聚合查询
db.orders.aggregate([ { $match: { status: "completed" } }, { $group: { _id: "$product", total: { $sum: "$amount" } } }, ]); -
实用命令
rs.status(); // 集群状态 db.stats(); // 数据库统计 db.help(); // 查看帮助 exit; // 退出shell