• Ubuntu上安装、使用MongoDB详细教程


    MongoDB简单介绍

    MongoDB是所有非关系型数据库中最像关系型数据库的一种存储技术,MongoDB中的数据结构是类似于JSON的BSON(Binary Json),这篇文章就详细介绍如何安装和使用MongoDB。

    MongoDB和MySQL中的概念对应关系

    MongoDBMySQL
    数据库数据库
    表/集合
    索引索引
    文档表的行数据

    一、下载MongoDB

    在MongoDB官网下载对应的MongoDB版本,可以点击以下链接快速跳转到下载页面:

    https://www.mongodb.com/try/download/communityicon-default.png?t=N7T8https://www.mongodb.com/try/download/community如图,页面往下滚动,点击选择安装包

    然后根据情况选择对应的选项,博主的Ubuntu操作系统是ubuntu-22.04.3版本,所以下载的是对应最新的Ubuntu 22.04 x64的安装包。

    注意:Ubuntu 22.04版本的操作系统有一点小问题,不建议使用,安装Ubuntu 22.03的就行了。

    下载完成后,通过finalshell上传到虚拟机上,比如usr目录,然后解压:

    tar -zxvf mongodb-linux-x86_64-ubuntu2204-6.0.11.tgz

    至此,Ubuntu上MongoDB的安装工作就完成了。

    二、启动MongoDB

    准备工作

    首先,创建MongoDB要使用的目录和文件

    mkdir -p /etc/mongodb/data /etc/mongodb/log /etc/mongodb/conf
    touch /etc/mongodb/conf/mongodb.conf

    启动方式一

    通过以下命令启动

    bin/mongod --port=27017 --dbpath=/etc/mongodb/data --logpath=/etc/mongodb/log/mongodb.log --bind_ip=0.0.0.0 --fork

    启动参数说明

    --dbpath: 指定数据文件存放目录
    --logpath: 指定日志文件,注意是指定文件不是目录
    --logappend: 使用追加的方式记录日志
    --port: 指定端口,默认为 27017
    --bind_ip: 默认只监听 localhost 网卡
    --fork: 后台启动

    启动方式二

    通过配置文件启动,修改/etc/mongodb/conf/mongodb.conf的内容

    1. systemLog:
    2. destination: file
    3. path: /etc/mongodb/log/mongodb.log
    4. logAppend: true
    5. storage:
    6. dbPath: /etc/mongodb/data
    7. engine: wiredTiger
    8. journal:
    9. enabled: true
    10. net:
    11. bindIp: 0.0.0.0
    12. port: 27017
    13. processManagement:
    14. fork: true

     然后通过以下命令启动MongoDB

    bin/mongod -f /etc/mongodb/conf/mongodb.conf

    三、安装MongoDB Shell

    访问MongoDB官网

    鼠标移动到左上角的【产品】,点击Comminity Server

    然后同样的鼠标移动到Resources,点击Launch and Manage MongoDB

    点击左边的MongoDB手册

    还是点击左边的菜单

    页面上有MongoDB Shell的介绍,这就是一个MongoDB的客户端连接工具,可以通过这个工具来写MongoDB命令操作MongoDB。

    点击【Download mongosh】按钮打开下载页面

    选择操作系统版本和mongosh版本,然后点击绿色的下载按钮

    把下载下来的压缩包上传到/usr目录,然后解压

    tar -zxvf mongosh-2.0.1-linux-x64.tgz

    启动mongosh:切换到mongosh安装目录,通过bin/mongosh启动

    四、使用MongoDB Shell

    接着,点击右下角的三个点,在现实的下拉菜单点击Documentation

    点击左边菜单中的Run Commands,然后根据文档学习mongosh的命令使用。

    接下来介绍mongosh的一些常用的命令

     执行javascript脚本

    load("xxx.js")

    在opt目录下创建文件index.js,文件内容如下:

    1. let result = db.user.find();
    2. console.log(result);

    然后加载index.js

    load("/opt/index.js")

    用户操作

     查看所有用户

    show users

    创建用户

    创建用户需要使用管理员权限,操作之前必须切换到admin数据库

    1. use admin
    2. db.createUser({user: 用户名, pwd: 密码, roles: [角色列表]});

    数据库操作

    切换数据库

    use db_name

    比如切换到mongo数据库,如果该数据库不存在,会自动创建

    删除数据库

    db.dropDatabase()

    显示当前数据库

    作用:显示当前使用的数据库

    查看所有数据库

    1. show dbs
    2. show databases

    查看数据库版本

    查看数据库版本,也就是MongoDB的版本

    db.version()

    集合操作

    创建集合

    db.createCollection(name, options)

    一般不需要使用这个命令,因为在往集合里添加数据时,如果集合不存在会自动创建

    options参数的可选值

    参数
    说明
    capped是否固定集合大小,设置为true时,当集合元素达到设定的值时会覆盖最老的数据
    size设置集合数据大小
    max
    指定固定集合中最大文档数量

     删除集合

    db.collection_name.drop()

    删除集合collection

    查看当前数据库所有集合

    show collections

    文档操作

    注意,这个章节中collection是集合名称,不是命令,可以任意取名,博主只是为了方便直接用collection

    添加操作

    insert

    往集合里添加一条数据

    db.collection.insert({"name": "mumu"});

    insertOne

    往集合里添加一条数据,同insert

    db.collection.insertOne({"name": "mumu", age: 19});

    insertMany

    往集合里一次性添加多条数据

    db.collection.insertMany([{"name": "张三", age: 20}, {"name": "李四", age: 21}, {"name": "王五", age: 22}]);

    查询操作

    mongosh中查询操作通过find()函数实现,下面介绍find的用法。

    无条件查询
    db.collection.find()

    带条件查询
    db.collection.find({"name": "mumu"})

    字段排序
    db.collection.find().sort(age: -1);

    例如,按照年龄降序排序,如果要升序则把-1改成1

    db.user.find().sort({age: -1});

    以上命令等价于MySQL中的

    select * from user order by age desc

    查询分页

    查询前三个用户

    db.user.find().skip(0).limit(3)

    以上命令等价于MySQL中的

    1. select * from user limit 3
    2. select * from user limit 0, 3

    skip()和limit()可以单独使用,以下两条命令等价

    1. db.user.find().limit(3);
    2. db.user.find().skip(0).limit(3);

    跳过前两条数据

    db.user.find().skip(2);

    更多查询方式

    以上的查询等价于

    db.collection.find({name: {$eq: "mumu"}})

    $eq是比较符,更多详情,请参考页面Query and Projection Operators — MongoDB Manual

    更新操作

    update

    这个命令的第三个参数是一个可选的选项

    • upsert:如果不存在update的记录,是否插入新的记录。默认false,不插入
    • multi:是否按条件查询出的多条记录全部更新。 默认false,只更新找到的第一条记录
    • writeConcern:决定一个写操作落到多少个节点上才算成功。

    updateOne

    更新单条数据,比如文档ID为ObjectId("6526ffd80353355e5a66f7ab")的name修改为heyunlin

     db.collection.updateOne({_id: ObjectId("6526ffd80353355e5a66f7ab")}, {$set: { name: "heyunlin" }})

    updateMany

    更新多条数据

    replaceOne

    替换一条数据

    关于修改操作符,请参考官网

    Update Operators — MongoDB Manual

    删除操作

    deleteOne

    删除一条记录:

    删除名字为张三的数据

    db.collection.delete({name: "张三"})

    deleteMany

    1、无条件删除:

    db.collection.deleteMany()

    2、带条件删除:

    删除名字为mumu中的数据

    db.collection.deleteMany({name: "mumu"})

    五、关闭MongoDB

    关闭方式一

    bin/mongod --port=27017 --dbpath=/etc/mongodb/data --shutdown

    关闭方式二

    1. use admin
    2. db.shutdownServer()

    关闭方式三

    通过kill进程来关闭

    1. ps -ef | grep mongodb
    2. kill PID

  • 相关阅读:
    android嵌入式开发及实训答案,android面试简历模板
    【随想】每日两题Day.4
    XSS线上靶场---prompt
    【AGC】云测试服务页面报错问题
    C专家编程 第1章 C:穿越时空的迷雾 1.3 标准I/O库和C预处理器
    JS高级:执行上下文
    嵌入式c语言
    【C++】一文带你吃透string的模拟实现 (万字详解)
    简析CloudCompare文件夹之间的关系
    Mac下安装与配置Jenkins
  • 原文地址:https://blog.csdn.net/heyl163_/article/details/133781878