指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

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 默认包含以下三个系统数据库:
  1. admin

    • 功能:
      • admin 数据库被认为是 MongoDB 的“全局”数据库,存储系统范围的配置。
      • 如果向 admin 数据库添加用户并授予适当权限,该用户将拥有所有数据库的管理权限。
    • 用途:
      • 存储用户权限和角色信息。
      • 配置系统级别的参数。
    • 常用命令:
      use admin
      db.system.users.find()  // 查看用户信息
      
  2. config

    • 功能:
      • 存储分片集群的信息(仅当启用了分片时有用)。
      • 包含与分片相关的元数据,如分片键和分片分布。
    • 用途:
      • 仅用于分片模式的元数据存储。
    • 注意:
      • 在非分片模式下,这个数据库通常不需要直接访问或修改。
  3. local

    • 功能:
      • 存储本地节点的特定信息。
      • 数据不会在副本集中同步。
    • 用途:
      • 存储 Oplog(操作日志),用于副本集的复制。
      • 本地配置或状态信息。
    • 注意:
      • 通常无需手动修改或删除此数据库中的内容。
如何创建自定义数据库

MongoDB 不需要预先创建数据库,插入数据时会自动创建数据库。例如:

  1. 切换到新数据库(如 mydatabase):

    use mydatabase
    
  2. 插入一个集合和文档:

    db.mycollection.insertOne({ name: "Alice", age: 25 })
    
  3. 数据库 mydatabase 和集合 mycollection 将被自动创建。


查询默认数据库中的内容
  1. 查看默认数据库列表:

    show dbs
    

    输出:

    admin    0.000GB
    config   0.000GB
    local    0.000GB
    
  2. 切换到 admin 数据库并查询用户:

    use admin
    db.system.users.find()
    
  3. 切换到 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);