ubuntu22下docker安装mongodb
//安装latest的社区版本
docker pull mongodb/mongodb-community-server
// 普通启动
docker run --name mongodb -p 27017:27017 -d mongodb/mongodb-community-server:latest
// 加参数,持久化和账号
docker run -d \
--name mongodb-community \
-p 27017:27017 \
-v /usr/local/mongo-data:/data/db \
-e MONGO_INITDB_ROOT_USERNAME=admin \
-e MONGO_INITDB_ROOT_PASSWORD=admin123 \
mongodb/mongodb-community-server:latest
// 查看容器启动情况
docker container ls
//客户端工具 Robo 3T is now Studio 3T
https://robomongo.org/
https://studio3t.com/download-thank-you/?OS=x64
我是ubuntu22系统,查看linux版本
$ lsb_release -dc
Description: Ubuntu 22.04.2 LTS
Codename: jammy
下载好以后(当前在/usr/local/下):
$ mv ~/Downloads/studio-3t-linux-x64.tar.gz ./
$ sudo tar zxvf studio-3t-linux-x64.tar.gz
tar: Ignoring unknown extended header keyword 'LIBARCHIVE.creationtime'
studio-3t-linux-x64.sh
这是一个可执行脚本,添加执行权限:
$ sudo chmod +x studio-3t-linux-x64.sh
然后:
$ sudo ./studio-3t-linux-x64.sh
Unpacking JRE ...
Starting Installer ...
直接下一步,安装完成后(可以选择创建icon),Studio 3T 通常会安装到默认路径(例如 /opt/studio-3t)
打开studio,需要登陆,直接google邮箱登陆了.
到此结束,不用安装官网的mongosh.
使用:
先通过studio链接启动的mongodb(使用这个uri: mongodb://admin:admin123@127.0.0.1:27017/admin)
链接成功之后默认有单个数据库 admin config local
下面是对mongo数据库的分析:
MongoDB 默认包含以下三个系统数据库:
admin
- 功能:
admin数据库被认为是 MongoDB 的“全局”数据库,存储系统范围的配置。- 如果向
admin数据库添加用户并授予适当权限,该用户将拥有所有数据库的管理权限。
- 用途:
- 存储用户权限和角色信息。
- 配置系统级别的参数。
- 常用命令:
use admin db.system.users.find() // 查看用户信息
- 功能:
config
- 功能:
- 存储分片集群的信息(仅当启用了分片时有用)。
- 包含与分片相关的元数据,如分片键和分片分布。
- 用途:
- 仅用于分片模式的元数据存储。
- 注意:
- 在非分片模式下,这个数据库通常不需要直接访问或修改。
- 功能:
local
- 功能:
- 存储本地节点的特定信息。
- 数据不会在副本集中同步。
- 用途:
- 存储 Oplog(操作日志),用于副本集的复制。
- 本地配置或状态信息。
- 注意:
- 通常无需手动修改或删除此数据库中的内容。
- 功能:
如何创建自定义数据库
MongoDB 不需要预先创建数据库,插入数据时会自动创建数据库。例如:
切换到新数据库(如
mydatabase):use mydatabase插入一个集合和文档:
db.mycollection.insertOne({ name: "Alice", age: 25 })数据库
mydatabase和集合mycollection将被自动创建。
查询默认数据库中的内容
查看默认数据库列表:
show dbs输出:
admin 0.000GB config 0.000GB local 0.000GB切换到
admin数据库并查询用户:use admin db.system.users.find()切换到
local数据库并查看 Oplog(适用于副本集):use local show collections db.oplog.rs.find().limit(5).pretty()
总结
admin: 系统范围管理和用户权限。config: 分片集群元数据。local: 本地节点的配置,不会在集群间复制。
如果你想创建自己的数据库或进行进一步操作,只需切换到你的目标数据库名称并开始插入数据即可!
贴一个node.js链接mongo:
const { MongoClient } = require('mongodb');
const uri = "mongodb://admin:admin123@127.0.0.1:27017/admin"; //这个url也可以作为studio链接mongo的uri
const client = new MongoClient(uri);
async function run() {
try {
await client.connect();
console.log("Connected to MongoDB!");
const db = client.db("test"); // 替换为你需要操作的数据库
const collection = db.collection("example"); // 替换为你的集合
const docs = await collection.find().toArray();
console.log(docs);
} finally {
await client.close();
}
}
run().catch(console.error);
