【学习笔记】MongoDB

1.MongoDB介绍

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

说明:BSON是一种计算机数据交换格式,主要被用作MongoDB数据库中的数据存储和网络传输格式。它是一种二进制表示形式,能用来表示简单数据结构、关联数组(MongoDB中称为“对象”或“文档”)以及MongoDB中的各种数据类型。BSON之名缘于JSON,含义为Binary JSON(二进制JSON)。

特点
(1) 面向集合存储,易存储对象类型的数据
(2) 支持动态查询
(3) 支持完全索引,包含内部对象
(4) 支持复制和故障恢复
(5) 支持多种开发语言
(6) 使用高效的二进制数据存储,包括大型对象(如视频等)

适用场景
1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

不适用的场景如下
1)要求高度事务性的系统。
2)传统的商业智能应用。
3)复杂的跨文档(表)级联查询。

SQL和MongoDB的术语/概念区别
在这里插入图片描述

2.安装MongoDB

2.1 window下安装mongoDB

第一步:下载压缩包
https://www.mongodb.com/try/download/community

第二步:双击.msi文件,按照提示安装即可
选择Custom(自定义),不选Complete
不要勾选Install MongoDB Compass(默认勾选了的)

第三步:创建一个文件夹用来存储数据信息,这个数据目录不会主动创建,我们在安装完成后需要创建它

第四步:命令行下运行MongoDB服务器
为了从命令提示符下运行 MongoDB 服务器,你必须从 MongoDB 目录的 bin 目录中执行mongod.exe 文件。命令中的路径是第三步的路径。

E:\MongoDB\bin>mongod --dbpath E:\MongoDB\data

第五步:连接服务器
新打开一个cmd界面,在mongoDB目录的bin目录中执行mongo.exe文件

E:\MongoDB\bin>mongo

测试连接成功:输入一些简单的指令

> db
test
> 3+5
8

2.2 Liunx下安装mongoDB

1.下载安装包

2.上传到linux,并解压

[a@czn001 mongodb]$ tar -zxvf mongodb-linux-x86_64-4.0.19-rc0.tgz 
[a@czn001 mongodb]$ ll
total 83428
drwxrwxr-x. 3 a a     4096 Nov 13 19:32 mongodb-linux-x86_64-4.0.19-rc0
-rw-rw-r--. 1 a a 85426098 Jun  3 15:00 mongodb-linux-x86_64-4.0.19-rc0.tgz

3.配置环境变量

[root@czn001 mongodb]# vi /etc/profile

在profile文件中添加以下内容:

export mongodb_home=/home/a/mongodb/mongodb-linux-x86_64-4.0.19-rc0
export PATH=$PATH:$mongodb_home/bin

保存并退出后,使文件生效:

[root@czn001 mongodb]# source /etc/profile

4.创建数据库目录data

[root@czn001 mongodb]# mkdir data
[root@czn001 mongodb]# ll
total 83432
drwxr-xr-x. 2 root root     4096 Nov 13 19:44 data
drwxrwxr-x. 3 a    a        4096 Nov 13 19:32 mongodb-linux-x86_64-4.0.19-rc0
-rw-rw-r--. 1 a    a    85426098 Jun  3 15:00 mongodb-linux-x86_64-4.0.19-rc0.tgz

5.创建日志目录logs和日志文件mongodb.log

[root@czn001 mongodb]# mkdir logs
[root@czn001 mongodb]# cd logs
[root@czn001 logs]# touch mongodb.log
[root@czn001 logs]# ll
total 0
-rw-r--r--. 1 root root 0 Nov 13 19:46 mongodb.log

6.在bin文件夹创建配置文件mongodb.conf

[root@czn001 mongodb]# cd mongodb-linux-x86_64-4.0.19-rc0
[root@czn001 mongodb-linux-x86_64-4.0.19-rc0]# cd bin
[root@czn001 bin]# vi mongodb.conf

配置文件中添加内容:

dbpath = /home/a/mongodb/data
logpath = /home/a/mongodb/logs/mongodb.log
port = 27017
fork = true

7.启动服务端、客户端

[root@czn001 bin]# ./mongod -f mongodb.conf
[root@czn001 bin]# ./mongo

3.mongodb支持的数据类型

1.null
null用于表示空值或不存在的字段。

{
   "x" : null}

2.布尔类型
布尔型数据有true和false两个值。

{
   "x" : true}

3.数值类型
在Mongo shell中,默认使用64位浮点型数据。因此,会有以下两种数值形式:

{
   "x" : 2.32}//或{"x" : 2}

对于整数类型,可以使用NumberInt()或NumberLong()方法进行转换。

{
   "x" : NumberInt(2)} 
{
   "x" : NumberLong(2)}

4.字符串
MongoDB中字符串类型使用UTF-8编码的字符表示。

{
   "x" : "123@qq.com"}

5.日期类型
MongoDB中日期使用时间戳表示,单位为毫秒,不存储时区

{
   "x" : new Date()}

创建日期对象时应该使用new Date(),而非构造函数Date()。将构造函数作为函数时返回的日期格式 是字符串,而非日期对象(与JavaScript工作机制有关)。
6.正则表达式
MongoDB中可使用与JavaScript相同的正则表达式进行查询筛选等

{
   "x" : /kaikeba/i}

7.数组
数据集可以用数组格式存储,与JavaSript中的数组表示相同

{
   "x" : ["kaikeba", "kaikeba.com"]}

数组中可以包含不同类型的数据元素,包括内嵌文档和数组等。所有MongoDB中键-值对支持的数据类型都可以用做数组的值。
8.内嵌文档
文档中可以嵌套一个子文档。在MongoDB文档总大小限制为16MB,建议使用子文档的形式组织数据,子文档查询效率要高于多键查询。

{
   "x" : {
   "kaikeba" : "kaikeba.com"}}

文档可以做为键的值,即:内嵌文档。MongoDB与关系型数据库相比,最大的优势就是内嵌文档。 与关系型数据库的扁平化数据结构相比,使用内嵌文档可以数据的组织方式更加自然。
9._id和ObjectId
MongoDB中每个文档都有一个"id"键,“id"可以是任何类型,不赋值”_id"时MongoDB会生成一个 ObjectId对象,示例如下。在实际应用中,建议给id赋值。

{
   "_id" : ObjectId()}

ObjectId是一个12字节(24个十六进制数字)的存储空间,ObjectId的12字节数据组织方式如下

{
   "_id" : ObjectId("5444cce6aef53b0f343e2b9b")} 
/* 上面ObjectId各位字符含义如下 */ 
//5444cce6,第0〜3字节(第1〜8位)为时间戳 
//aef53b,第4〜6字节(第9〜14位)为机器码 
//0f34,第7〜8字节(第15〜18位)为进程ID 
//3e2b9b,第9〜11字节(第19〜24位)为自增计数器

10.代码
MongoDB的文档和代码中可以包括JavaScript代码

{
   "x" : function(){
    /*这里是一段JavaScript代码*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值