系统学习Linux-MongoDB

这篇具有很好参考价值的文章主要介绍了系统学习Linux-MongoDB。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON

相关概念 实例:系统上运行的mongodb的进程,类似于mysql实例;
库:每个数据库都是独立的,有自己的用户,权限,独立存储集合,类似于mysql的库;
 集合:由一组文档构成,类似于mysql的表;
 文档:mongodb数据库的最小数据集,是由多个键值对有序组合的数据单元,类似于mysql的数据记录;
主键:唯一标识一行数据
特性 1、面向集合文档存储,适合存储json形式的数据;
2、格式自由,数据格式不固定,数据结构发生变更的同时不会影响程序运行;
3、面向对象的sql查询语句,基本涵盖关系型数据库的所有查询语句;
4、有索引的支持,查询效率更快;
5、支持复制和自动故障转移;
6、可以使用分片集群提升查询性能

应用场景

游戏\物流\社交\物联网\视频直播\大数据


安装Mongodb

rpm安装

移动到yum.repos.d目录下创建mongodb的yum文件

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim mongo.repo 
写入以下内容
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

安装
[root@localhost yum.repos.d]# yum install -y mongodb-org

..
..

  正在安装    : mongodb-org-tools-4.2.24-1.el7.x86_64                            1/5 
  正在安装    : mongodb-org-mongos-4.2.24-1.el7.x86_64                           2/5 
  正在安装    : mongodb-org-shell-4.2.24-1.el7.x86_64                            3/5 
  正在安装    : mongodb-org-server-4.2.24-1.el7.x86_64                           4/5 
Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.
  正在安装    : mongodb-org-4.2.24-1.el7.x86_64                                  5/5 
  验证中      : mongodb-org-server-4.2.24-1.el7.x86_64                           1/5 
  验证中      : mongodb-org-4.2.24-1.el7.x86_64                                  2/5 
  验证中      : mongodb-org-shell-4.2.24-1.el7.x86_64                            3/5 
  验证中      : mongodb-org-mongos-4.2.24-1.el7.x86_64                           4/5 
  验证中      : mongodb-org-tools-4.2.24-1.el7.x86_64                            5/5 

已安装:
  mongodb-org.x86_64 0:4.2.24-1.el7                                                  

作为依赖被安装:
  mongodb-org-mongos.x86_64 0:4.2.24-1.el7  mongodb-org-server.x86_64 0:4.2.24-1.el7 
  mongodb-org-shell.x86_64 0:4.2.24-1.el7   mongodb-org-tools.x86_64 0:4.2.24-1.el7  

完毕!

启动数据库并查看端口号

注:启动数据库服务特殊db没有b

systemctl start mongod.service 

[root@localhost ~]# systemctl start mongod.service 
[root@localhost ~]# netstat -antpu | grep mongod
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      74651/mongod   

目录结构

rpm -ql mongodb-org-server /etc/mongod.conf port: 27017 监听端口号
bindIp: 127.0.0.1 监听地址
/run/mongodb PID文件
/usr/bin/mongod 启动命令
/var/lib/mongo 存储数据文件
/var/log/mongodb 日志
rpm -ql mongodb-org-shell /usr/bin/mongo 客户端命令
rpm -ql mongodb-org-tools /usr/bin/mongodump 备份数据库
/usr/bin/mongoexport 备份文档
/usr/bin/mongoimport 恢复文档
/usr/bin/mongorestore 恢复数据库

默认数据库

admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这个用户自动继承所有数据库的权限。
一些特定的服务器端命令也只能从这个数据库运行,比如列出所有的数据库或者关闭服务器。
local: 这个数据库永远不会被复制,可以用来存储限于本地单台服务器的任意集合。
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息。

数据库操作

库操作命令整理

查看数据库 show databases
show dbs
显示当前所在数据库 db
切换数据库 use  dbName
数据库创建 隐式创建 不用主动创建,使用use newDB,会自动创建不存在的数据库
只有在库中创建集合后才会保存,并使用show dbs查看到
删除数据库 use dbName
db.dropdatabase()

 输入mongo就会进入数据库模式

[root@localhost ~]# mongo
MongoDB shell version v4.2.24
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("593314ff-d1da-4a78-b01b-128e04aa71d8") }
MongoDB server version: 4.2.24
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        https://docs.mongodb.com/
Questions? Try the MongoDB Developer Community Forums
        https://community.mongodb.com
Server has startup warnings: 
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] 
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] 
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] 
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] 
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] **        We suggest setting it to 'never'
2023-08-14T18:50:28.519+0800 I  CONTROL  [initandlisten] 
---
Enable MongoDB's free cloud-based monitoring service, which will then receive and display
metrics about your deployment (disk utilization, CPU, operation statistics, etc).

The monitoring data will be available on a MongoDB website with a unique URL accessible to you
and anyone you share the URL with. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.

To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---

> 

与mysql不同的查看命令dbs

> show databases
admin   0.000GB
config  0.000GB
local   0.000GB
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
> 

两个命令都可以查看数据库

切换数据库

> use local
switched to db local   一切换到当前数据库

> db
local  所在库

创建数据库

> use liweijia
switched to db liweijia

删除数据库

use dbName

db.dropdatabase()


文档操作

mongodb存储数字时默认是float,若要以整型形式存储numberInt()

文档操作命令整理

查看集合 show tables
创建集合 db.createCollection("test")
删除集合 db.需要删除的集合名称.drop()
插入数据(文档) db.集合名称.insert({key:value})                                                             单行
db.集合名称.insertmany([{key:value},{key:value},{key:value}])        多行
mongodb默认数字的数据类型float浮点型,若要改变为整型:NumberInt(数字)
查询数据 全集合查询 db.集合名称.find({})
db.集合名称.find()
条件查询 db.info.find({查询条件1key:value,查询条件2,...},{key1:1|0,key2:1|0,...})
key:1 显示,key:0 不显示
当显示的key只有一个时,key:1 只显示该key及对应value,key:0 显示除了该key之外其他所有keyvalue
查询集合中有多少文档 db.集合名称.count()
删除数据 全文删除 db.集合名称.remove({})
条件删除 db.集合名称.remove({key:value})
更新数据 db.info.update({_id:"3"}, {$set:{nickname:"jack"}})
所有满足条件的文档都进行更新 db.info.update({userid:"1003"},{$set:{nickname:"tom"}},{multi:true})
更新文档进行数值递增 db.info.update({userid:"1003"},{$inc:{likenum:NumberInt(1000)}})
创建集合
> db.createCollection('shiyan')
{ "ok" : 1 }

查看集合
> show tables
shiyan

删除集合
> db.shiyan.drop()
true
> show tables
>

插入数据单行
创建数据库
> use lwj
switched to db lwj
> db.createCollection("test")
{ "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
lwj     0.000GB
test    0.000GB
> db.lwj.insert({'id':'1','name':'lwj1'})
WriteResult({ "nInserted" : 1 })

插入数据多行
> db.lwj.insertMany([{'id':'2','name':'lwj2'},{'id':'3','name':'lwj3'},{'id':'4','name':'lwj4'}])
{
        "acknowledged" : true,
        "insertedIds" : [
                ObjectId("64dae9e52e7071ebd2631dcd"),
                ObjectId("64dae9e52e7071ebd2631dce"),
                ObjectId("64dae9e52e7071ebd2631dcf")
        ]
}
> 

全集合查询
> db.lwj.find()
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1", "name" : "lwj1" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcd"), "id" : "2", "name" : "lwj2" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcf"), "id" : "4", "name" : "lwj4" }

条件查询
检索id等于3的数据
> db.lwj.find({'id':'3'})
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
> 
条件查询其中{'name':'0'}则是除了name都显示,{'name':'1'}指的是只显示name
> db.lwj.find({'id':'3'},{name:0})
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3" }
> db.lwj.find({'id':'3'},{name:1})
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "name" : "lwj3" }

数据更新(匹配1,未完成0,已完成1)
> db.lwj.update({'name':'lwj1'},{$set:{'id':'1024'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
查看
> db.lwj.find({'name':'lwj1'})
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1024", "name" : "lwj1" }




Mongodb数据库备份

备份命令:mongodump

选项 -h hostname:port
-u <username>
-p <password>
--authenticationDatabase <dbname>
-d <database>
-o <path>
语法

mongodump -d dbName -h hostName:port -u userName -p Password -o backupDirectory

-d 指定要备份的数据库名称 -h 指定主机名端口号如:localhost:27017 -u -p 用户密码

-o 指定备份文件输出的目录,备份文件以该目录为基准创建

备份命令:mongoexport

选项 -h hostname:port
-u <username>
-p <password>
--authenticationDatabase <dbname>
-d <database>
-o <path>
语法

mongoexport -d dbName -c tableName -h hostName:port -u userName -p Password -o backupDirectory/jsonFile.json

mongodump备份 首先要exit退出数据库模式
> exit
bye
[root@localhost ~]#  mongodump -d lwj -o /opt/lwj-back.json
2023-08-15T13:47:40.395+0800    writing lwj.lwj to /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T13:47:40.396+0800    writing lwj.test to /opt/lwj-back.json/lwj/test.bson
2023-08-15T13:47:40.396+0800    done dumping lwj.lwj (4 documents)
2023-08-15T13:47:40.397+0800    done dumping lwj.test (0 documents)
[root@localhost ~]# cd /opt
[root@localhost opt]# ls
lwj-back.json  rh

mongoexport备份test合集 首先要exit退出数据库模式
> exit
bye
[root@localhost opt]# mongoexport -d lwj -c test -o /opt/test-bakc.json
2023-08-15T13:55:58.611+0800    connected to: mongodb://localhost/
2023-08-15T13:55:58.614+0800    exported 0 records
[root@localhost opt]# ls
lwj-back.json  rh  test-bakc.json
[root@localhost opt]# 

恢复命令:mongorestore

选项 -h hostname:port
-u <username>
-p <password>
--authenticationDatabase <dbname>
-d <database>
--drop 当目标数据库中存在同名集合则删除在恢复
语法 mongorestore -h hostName -u username -p password -d dbName -c tableName bakcupDirector/bsonFile

恢复命令:mongoimport

选项 -h hostname:port
-u <username>
-p <password>
--authenticationDatabase <dbname>
-d <database>
--drop 当目标数据库中存在同名集合则删除在恢复
语法 mongoimport -d dbName -c tableName -h hostName:port -u userName -p Password  backupDirectory/jsonFile.json
先删除lwj数据库
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
lwj     0.000GB
test    0.000GB
> show tables
lwj
shiyan
> use lwj
switched to db lwj
> db.dropDatabase()
{ "dropped" : "lwj", "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
test    0.000GB
> 

恢复数据库
[root@localhost ~]# ls /opt/lwj-back.json/*
lwj.bson  lwj.metadata.json  test.bson  test.metadata.json
[root@localhost ~]# mongorestore -d lwj -c lwj /opt/lwj-back.json/lwj/lwj.bson 
2023-08-15T14:22:08.515+0800    checking for collection data in /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T14:22:08.516+0800    reading metadata for lwj.lwj from /opt/lwj-back.json/lwj/lwj.metadata.json
2023-08-15T14:22:08.520+0800    restoring lwj.lwj from /opt/lwj-back.json/lwj/lwj.bson
2023-08-15T14:22:08.581+0800    no indexes to restore
2023-08-15T14:22:08.581+0800    finished restoring lwj.lwj (4 documents, 0 failures)
2023-08-15T14:22:08.581+0800    4 document(s) restored successfully. 0 document(s) failed to restore.

登陆mongo进行验证
> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
lwj     0.000GB
test    0.000GB
> use lwj
switched to db lwj
> show tables
lwj
> db.lwj.find()
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcd"), "id" : "2", "name" : "lwj2" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcf"), "id" : "4", "name" : "lwj4" }
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1024", "name" : "lwj1" }
> 
删除集合
> db.lwj.drop()
trup
> use lwj
switched to db hy
> show tables
> 
恢复lwj集合
[root@localhost hy]# mongoimport -d hy -c lwj /opt/lwj-back.json
2023-08-15T10:02:27.858+0800	connected to: mongodb://localhost/
2023-08-15T10:02:27.861+0800	6 document(s) imported successfully. 0 document(s) failed to import.
##查看
> show tables
lwj
> db.test.find()
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcd"), "id" : "2", "name" : "lwj2" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dce"), "id" : "3", "name" : "lwj3" }
{ "_id" : ObjectId("64dae9e52e7071ebd2631dcf"), "id" : "4", "name" : "lwj4" }
{ "_id" : ObjectId("64dae4232e7071ebd2631dcc"), "id" : "1024", "name" : "lwj1" }
> 

除此之外表还可以导入到其它的库,创建一个新库yes,把集合test导入 文章来源地址https://www.toymoban.com/news/detail-651233.html

##创建库
> show dbs
admin   0.000GB
config  0.000GB
hy      0.000GB
local   0.000GB
> use yes
switched to db yes
> db.createCollection('hy')
{ "ok" : 1 }
> show dbs
admin   0.000GB
config  0.000GB
hy      0.000GB
local   0.000GB
yes     0.000GB
> show tables
hy
> 
##把集合test导入yes
[root@localhost hy]# mongoimport -d yes -c test /opt/test-back.json
2023-08-15T10:06:57.990+0800	connected to: mongodb://localhost/
2023-08-15T10:06:57.993+0800	6 document(s) imported successfully. 0 document(s) failed to import.
##验证
> show tables
hy
test
> db.test.find()
{ "_id" : ObjectId("64da3428cbf20d8dc76b3349"), "id" : "2", "name" : "hy2", "age" : "666" }
{ "_id" : ObjectId("64da3428cbf20d8dc76b334a"), "id" : "3", "name" : "hy3", "age" : "20" }
{ "_id" : ObjectId("64da3e5ccbf20d8dc76b334b"), "id" : "2", "name" : "hy4", "age" : "666" }
{ "_id" : ObjectId("64da3e5ccbf20d8dc76b334c"), "id" : "2", "name" : "hy5", "age" : "666" }
{ "_id" : ObjectId("64da414bcbf20d8dc76b334d"), "id" : "7", "name" : "hy7", "age" : 120 }
{ "_id" : ObjectId("64da337fcbf20d8dc76b3348"), "id" : "99", "name" : "hy1", "age" : "88" }

到了这里,关于系统学习Linux-MongoDB的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算Linux运维——Linux系统管理——软件管理

    目录 点关注不迷路 1RPM软件管理 1、软件安装包类型 2、RPM软件安装包的组成 二、RPM软件管理操作 rpm命令 1、安装软件 2、查看软件 3、卸载软件 2yum工具介绍 一、yum工具介绍 1、优势 2、yum源配置文件 二、配置本地源安装软件 1、备份自带的HTTP源 2、编写本地源 3、清除旧的

    2024年02月06日
    浏览(52)
  • Linux运维:系统日志篇

    您可以将系统日志理解为记录系统运行情况的一种日记。它包含了各种级别的信息,从调试信息和错误报告到警告和系统事件等。通过对系统日志进行分析,管理员可以了解系统的状态和运行情况,发现并解决问题,确保系统的正常运行。因此,系统日志是管理和维护 Linux

    2024年02月05日
    浏览(107)
  • 系统学习Linux-MySQL数据库备份(四)

    数据库备份是指将数据库中的数据、表格、视图、存储过程、触发器等信息备份到另一个地方,一遍在数据库丢失或损坏时进行恢复,数据库备份是数据库管理中必不可少的一项工作,通过备份可以保护数据库中的数据和业务。 备份的主要目的是灾难恢复,备份还可以测试应

    2024年02月15日
    浏览(55)
  • 运维 | 如何在 Linux 系统中删除软链接 | Linux

    在 Linux 中, 符号链接 (symbolic link,或者symlink)也称为 软链接 ,是一种特殊类型的文件,用作指向另一个文件的快捷方式。 我们可以使用 ln 命令来创建软连接,那么怎样删除呢? Linux 中没有用于删除符号链接的特殊命令,不过可以使用 rm 命令,该命令主要用于删除文件

    2024年04月14日
    浏览(56)
  • 云计算Linux运维——Linux系统管理——网络参数配置

    点关注不迷路 目录 1网络参数配置 一、网络参数 1、主机名 2、查看网卡IP地址 3、查看网关 4、查看DNS服务器地址 二、配置网卡 1、修改网卡配置文件 2、nmcli命令 3、nmcli配置网卡 3)重新加载配置 三、VMware网络工作模式 1、虚拟网络、虚拟网卡 2、虚拟网络工作模式 2双网卡绑

    2024年02月04日
    浏览(47)
  • Linux运维监控学习笔记5

    监控项和应用集(重点) 监控项(item):监控项是从主机收集的信息。一个监控项是一个独立的子标,代表收集数据或监控的最小的单位。 应用集(applications):代表多个监控项目合成的组。 创建监控项: 1)Web管理界面-配置-主机-监控项(选择的是agent1的监控项,每个主

    2024年02月09日
    浏览(37)
  • MySQL基础学习: linux系统mysql 密码插件 validate_password安装

    1、没有安装mysql密码插件,执行命令:SHOW VARIABLES LIKE ‘validate_password%’; 2、安装mysql密码插件,执行命令:install plugin validate_password soname ‘validate_password.so’; 3、再次执行:SHOW VARIABLES LIKE ‘validate_password%’; 4、卸载mysql密码插件,执行命令:UNINSTALL PLUGIN validate_password; 5、再

    2024年02月03日
    浏览(51)
  • Linux 系统日常运维 9 大技能,搞定 90% 日常运维

    一、Linux 系统日常运维九大技能 1、安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXE+kickstart 可以参考如下链接内容: http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html 2、初始化配置 禁用服务 可以配置为

    2024年02月12日
    浏览(44)
  • 【Linux运维】LVM和RAID学习及实践

    某台服务器的磁盘管理需要自己动手处理,找了一些资料也踩了一些坑,在这里记录一下,先介绍一下LVM和RAID这两个东西。在计算机系统中,为了提高存储系统的性能、可用性和容量,许多技术被引入,其中包括LVM(Logical Volume Manager)和RAID(Redundant Array of Independent Disks)。

    2024年01月21日
    浏览(35)
  • 运维必备Linux学习day1(建议收藏,运维面试100%会涉及)

    一.找回root密码 找到以““Linux16”开头内容所在的行数”,在行的最后面输入: init=/bin/sh 输完红色命令后 Ctrl + X 命令 接下来在光标闪烁处,输入指令: mount -o remount,rw / (注意:各个单词间有空格) 光标闪烁的位置中,输入passwd,输入一次密码并确认密码 光标闪烁的位置

    2024年03月10日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包