标签:stat 多个 javascrip ice bool 集合 number 网络广告 binary
Mongo 并非芒果(Mango)的意思,而是源于 Humongous(巨大的;庞大的)一词。
MongoDB 是一个基于分布式文件存储的 NoSQL 数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。关于什么是 NoSQL 可阅读《学了那么多 NoSQL 数据库 NoSQL 究竟是啥》
MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库当中功能最丰富,最像关系数据库的。
MongoDB 使用 BSON(Binary JSON)对象来存储,与 JSON 格式的键值对(key/value)类似,字段值可以包含其他文档,数组及文档数组。支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系型数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
2007 年,Dwight Merriman,Eliot Horowitz 和 Kevin Ryan 成立 10gen 软件公司,在成立之初,这家的公司目标是进军云计算行业,为企业提供云计算服务。在开发云计算产品时,他们准备开发一个类似于数据库的组件,为云计算产品提供存储服务。当时是关系型数据库一统天下的时间,他们觉得传统的关系型数据库无法满足他们的要求,他们想要一款程序员不懂SQL语言也可以使用的数据存储产品。
在网络上找了一圈,不管是开源的还是闭源的产品,都没找到让他们满意的东西,既然找不到,那就自己开发吧,反正他们也有那个技术实力,10gen 的创始人都来自谷歌,他们创建的网络广告公司 DoubleClick 被谷歌收购了,这是他们的第二次创业。
10gen 公司不使用关系型数据库是有一定原因的,当时他们还在 DoubleClick 公司的时候,就吃过关系型数据库的苦头。DoubleClick 是一家网络广告公司,服务美国众多的知名公司,该公司每秒提供 40 万个广告,但在可伸缩性和敏捷性方面经常遇到困难,因此他们不得不经常自己开发和使用许多自定义数据存储来解决现有关系型数据库的不足,这让他们很是苦恼。
因此他们决定开发一款数据库产品解决他们在 DoubleClick 时遇到的问题,并为自己的云计算产品提供存储服务。
10gen
的组织开发,现在被称为 MongoDB Inc.
截至 2020 年,MongoDB 的全球下载量达到了 1.1 亿次。MongoDB 公司目前有 2000 多名员工,有超过 18000 名付费客户,其中有很多客户同时使用 MongoDB Atlas 和 MongoDB 企业版。大多数大公司在内部的一些场景中仍然使用的是社区版。MongoDB 社区版仍然是开源的,除了一些关键特性外,它与 MongoDB 企业版差不多。
SQL 术语概念 | MongoDB 术语概念 |
---|---|
database(数据库) | database(数据库) |
table(表) | collection(集合) |
row(行) | document or BSON document(文档) |
column(列) | field(字段) |
index(索引) | index(索引) |
table joins(表连接) | embedded documents and linking(嵌入的文档和链接) |
primary key Specify any unique column or column combination as primary key.(指定任意唯一的列或列组合作为主键) | primary keyIn MongoDB, the primary key isautomatically set to the _id field.(在 MongoDB 中,主键被自动设置为 _id 字段) |
aggregation (e.g. group by) | MongoDB provides three ways to perform aggregation: the aggregation pipeline, the map-reduce function, and single purpose aggregation methods.(聚合操作) |
数据类型 | 描述 |
---|---|
String | 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。 |
Integer | 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。 |
Boolean | 布尔值。用于存储布尔值(真/假)。 |
Double | 双精度浮点值。用于存储浮点值。 |
Min/Max keys | 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。 |
Arrays | 用于将数组或列表或多个值存储为一个键。 |
Timestamp | 时间戳。记录文档修改或添加的具体时间。 |
Object | 用于内嵌文档。 |
Null | 用于创建空值。 |
Symbol | 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。 |
Date | 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。 |
Object ID | 对象 ID。用于创建文档的 ID。 |
Binary Data | 二进制数据。用于存储二进制数据。 |
Code | 代码类型。用于在文档中存储 JavaScript 代码。 |
Regular expression | 正则表达式类型。用于存储正则表达式。 |
下载地址:https://www.mongodb.com/try/download/community
在页面中选择 MongoDB Community Server
社区版,根据自己的系统选择对应的版本,我自己使用的是 CentOS
版本。而 MongoDB 只有 RedHat
版本,下载使用即可。
CentOS 是 Community ENTerprise Operating System 的简称,也可以叫它社区企业操作系统,是 Linux 操作系统中的一个发行版本。
CentOS 并不是全新的 Linux 发行版,它是 Red Hat 家族发行的企业版的产品 Red Hat Enterprise Linux(以下称之为 RHEL)的克隆版本。RHEL 是很多企业采用的 Linux 发行版本,需要向 Red Hat 付费才可以使用,并能得到付费对应的服务,技术支持和版本升级。CentOS 可以像 RHEL 一样的构筑 Linux 系统环境,但不需要向 Red Hat 支付任何的产品和服务费用,同时也得不到任何有偿技术支持和升级服务。
还可以通过:https://docs.mongodb.com/manual/installation/ 确认该版本软件是否支持你的操作系统。
将资源上传至服务器 /usr/local/src
,解压至 /usr/local
并重命名为 mongodb
。
# 创建 mongodb 目录
mkdir -p /usr/local/mongodb
# 解压 mongodb 至指定目录
tar -zxvf /usr/local/src/mongodb-linux-x86_64-rhel70-4.4.1.tgz -C /usr/local/
# 重命名解压目录为 mongodb
mv /usr/local/mongodb-linux-x86_64-rhel70-4.4.1/ /usr/local/mongodb
创建用于存放数据和日志的文件夹,并修改其权限增加读写权限。
# 创建存放数据的目录
mkdir -p /usr/local/mongodb/data/db
# 创建存放日志的目录
mkdir -p /usr/local/mongodb/logs
# 创建日志记录文件
touch /usr/local/mongodb/logs/mongodb.log
MongoDB 的默认启动方式为前台启动。所谓的前台启动就是 MongoDB 启动进程后会占用当前的终端窗口。
# 切换至指定目录
cd /usr/local/mongodb/
# 前台启动
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0
--dbpath
:指定数据文件存放目录--logpath
:指定日志文件,注意是指定文件不是目录--logappend
:使用追加的方式记录日志--port
:指定端口,默认为 27017--bind_ip
:绑定服务 IP,若绑定 127.0.0.1,则只能本机访问,默认为本机地址
所谓的后台启动就是以守护进程的方式启动 MongoDB。命令中添加 --fork
即可。
# 后台启动
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork
通过命令启动的方式并不适合管理,毕竟每次输入命令都需要考虑各参数的配置。我们可以通过配置文件来配置启动参数,然后通过指定配置文件的方式启动服务,这样在管理 MongoDB 上就比较方便了。
在 bin
目录下增加一个 mongodb.conf
配置文件。
# 数据文件存放目录
dbpath = /usr/local/mongodb/data/db
# 日志文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log
# 以追加的方式记录日志
logappend = true
# 端口默认为 27017
port = 27017
# 对访问 IP 地址不做限制,默认为本机地址
bind_ip = 0.0.0.0
# 以守护进程的方式启用,即在后台运行
fork = true
# 切换至指定目录
cd /usr/local/mongodb/
# 指定配置文件的方式启动服务
bin/mongod -f bin/mongodb.conf
可以通过 bin
目录中的 mongo
来访问 MongoDB
服务器。
命令为:bin/mongo --host 连接的主机地址(默认127.0.0.1) --port 端口(默认27017)
[root@localhost mongodb]# bin/mongo
MongoDB shell version v4.4.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("2bf54fad-83bc-444c-8bee-166a224445b8") }
MongoDB server version: 4.4.1
---
The server generated these startup warnings when booting:
2020-10-21T10:47:44.855+08:00: ***** SERVER RESTARTED *****
2020-10-21T10:47:47.024+08:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
2020-10-21T10:47:47.024+08:00: You are running this process as the root user, which is not recommended
2020-10-21T10:47:47.024+08:00: /sys/kernel/mm/transparent_hugepage/enabled is ‘always‘. We suggest setting it to ‘never‘
2020-10-21T10:47:47.024+08:00: /sys/kernel/mm/transparent_hugepage/defrag is ‘always‘. We suggest setting it to ‘never‘
2020-10-21T10:47:47.024+08:00: Soft rlimits too low
2020-10-21T10:47:47.024+08:00: currentValue: 1024
2020-10-21T10:47:47.024+08:00: recommendedMinimum: 64000
---
---
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()
---
>
help
帮助命令。
> help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, ‘global‘ is default
use <db_name> set current database
db.mycoll.find() list objects in collection mycoll
db.mycoll.find( { a : 1 } ) list objects in mycoll where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
db.version()
查看版本信息。
> db.version()
4.4.1
show dbs
查看所有数据库。
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
这里先简单通过客户端进行访问测试,后面会详细罗列客户端操作 MongoDB 数据库、集合、文档、索引、内置函数等相关的操作。
使用 Ctrl + c
即可关闭。
使用 --shutdown
参数即可关闭。
# 命令启动方式的关闭
bin/mongod --dbpath /usr/local/mongodb/data/db/ --logpath /usr/local/mongodb/logs/mongodb.log --logappend --port 27017 --bind_ip 0.0.0.0 --fork --shutdown
# 配置文件启动方式的关闭
bin/mongod -f bin/mongodb.conf --shutdown
通过 kill -9
的方式强制关闭进程,一般这种方式都不怎么推荐使用。
# 查看 mongodb 运行的进程信息
ps -ef | grep mongodb
# kill -9 强制关闭
kill -9 pid
连接到 MongoDB 服务后,切换到 admin 数据库,并使用相关函数关闭服务。
# 连接 mongodb
bin/mongo
# 切换 admin 数据库
use admin
# 执行以下函数(2选1)即可关闭服务
db.shutdownServer()
db.runCommand(“shutdown”)
每次操作 MongoDB 都需要进入具体的目录才行,比如启动服务,客户端进行连接等,可不可以在任意目录都能进行操作。答案当然是可以的,只需要将 MongoDB 相关目录添加至系统环境变量即可。
先通过 vim /etc/profile
编辑系统环境变量文件,添加以下内容。
# 添加环境变量
export MONGODB_HOME=/usr/local/mongodb
export PATH=$PATH:$MONGODB_HOME/bin
然后通过 source /etc/profile
重新加载系统环境变量。这样在系统任意目录下都可以直接操作 MongoDB 了。
本文讲解了 MongoDB 的一些入门级内容,教会了大家如何基于 Linux 环境下载与安装 MongoDB。下文我们先从安全问题入手,看看 MongoDB 未加密导致的惨痛经历与教训,顺便再教大家一波实用的解决方案。
本文采用 知识共享「署名-非商业性使用-禁止演绎 4.0 国际」许可协议
。
?? 您的点赞
和转发
是对我最大的支持。
?? 关注公众号 哈喽沃德先生
「文档 + 视频」每篇文章都配有专门视频讲解,学习更轻松噢 ~
标签:stat 多个 javascrip ice bool 集合 number 网络广告 binary
原文地址:https://www.cnblogs.com/mrhelloworld/p/mongodb.html