当前位置:网站首页>MongoDB入门学习
MongoDB入门学习
2022-07-24 15:00:00 【北海怪兽Monster】
MongoDB简介
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品(定义还是非关系数据库),是非关系数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似于json的bson格式,因此可以存储比较复杂的数据类型。
和Redis进行比较:
Redis对于大数据存储没有MongoDB专业,Redis是用于快速的读写,所以Redis一般用作缓存。对于数据量大的存储用MongoDB。而且MongoDB使用价值低。相比MySql,搭建数据服务器成本高。
什么情况使用MongoDB:
数据量大,写入操作频繁,价值较低。
数据量大,所以Redis淘汰。(相比Redis读写性能肯定比不上)
如果使用MySql,那么搭建数据服务器成本高,但是存储价值低的数据,不划算。所以选择MongoDB。
MongoDB特点
Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
- 面向集合存储,易存储对象类型的数据。
- 模式自由。
- 支持动态查询。
- 支持完全索引,包含内部对象。
- 支持查询。
- 支持复制和故障恢复。
- 使用高效的二进制数据存储,包括大型对象(如视频等)。
- 自动处理碎片,以支持云计算层次的扩展性。
- 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
- 文件存储格式为BSON(一种JSON的扩展)。
MongoDB体系结构
MongoDB 的逻辑结构是一种层次结构。主要由:文档(document)、集合(collection)、数据库(database)这三部分组成的。逻辑结构是面向用户的,用户使用MongoDB 开发应用程序使用的就是逻辑结构。
- MongoDB 的文档(document),相当于关系数据库中的一行记录。
- 多个文档组成一个集合(collection),相当于关系数据库的表。
- 多个集合(collection),逻辑上组织在一起,就是数据库(database)。
- 一个 MongoDB 实例支持多个数据库(database)。

MongoDB数据类型
| 数据类型 | 描述 |
|---|---|
| String | 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。 |
| Integer | 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或64 位。 |
| Boolean | 布尔值。用于存储布尔值(真/假)。 |
| Double | 双精度浮点值。用于存储浮点值。 |
| Array | 用于将数组或列表或多个值存储为一个键。 |
| Timestamp | 时间戳。记录文档修改或添加的具体时间。 |
| Object | 用于内嵌文档。 |
| Null | 用于创建空值。 |
| Date | 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。 |
| Object ID | 对象 ID。用于创建文档的 ID。 |
| Binary Data | 二进制数据。用于存储二进制数据。 |
| Code | 代码类型。用于在文档中存储 JavaScript 代码。 |
| Regular expression | 正则表达式类型。用于存储正则表达式。 |
特殊说明:
1、ObjectID 一定得有,如果我们设置就用我们的,我们没有设置,MongoDB就帮我们生成一个。
ObjectID 类类似于唯一主键,可以很快的去生成和排序,包含12bytes,含义是
- 前四个字节标识创建unix时间戳,格林尼治时间UTC时间,比北京时间晚了8个小时。
- 接下来3个字节是机器标识码,区分不同设备
- 紧接着的两个字节由进程id组成PID(进程id)
- 最后三个字节是随机数

MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象
2、 时间戳
BSON 有一个特殊的时间戳类型,与普通的日期类型不相关。
时间戳值是一个 64 位的值。其中:
前32位是一个 time_t 值【与Unix新纪元(1970年1月1日)相差的秒数】
后32位是在某秒中操作的一个递增的序数
在单个 mongod 实例中,时间戳值通常是唯一的。
3、日期
表示当前距离 Unix新纪元(1970年1月1日)的毫秒数。日期类型是有符号的, 负数
表示 1970 年之前的日期。
Window版本MongoDB安装
直接双击msi 启动安装程序,安装即可。
安装完成后:
mongo.exe 是客户端,用来连接服务得
mongod.exe 是用来启动服务得
启动服务:首先我们需要一个存放数据得文件夹。默认端口号27017
指定端口启动,在命令后面加 -port 8989
启动客户端进行连接:默认就是连接本地得 27017端口
指定端口连接: mongo 127.0.0.1:8989
Docker 环境下MongoDB安装
生产环境中我们将 服务端部署在Linux中,只需要在window中进行连接即可
在Linux虚拟机中创建mongo容器,命令如下:
docker run ‐id ‐‐name mongo ‐p 27017:27017 mongo
在Window命令行窗口出入登录命令:
mongo 192.168.200.128 端口号不写默认27017
边栏推荐
- Strongly connected component
- AG. DS binary tree -- hierarchical traversal
- (零九)Flask有手就行——Cookie和Session
- CSDN垃圾的没有底线!
- Google Earth Engine——使用MODIS数据进行逐月数据的过火(火灾)面积并导出
- Performance test - Preparation of test plan
- Discussion and legitimacy of the order of entering and leaving the stack
- Similarities and differences between nor flash and NAND flash
- Leetcode-09 (next rank + happy number + full rank)
- The spiral matrix of the force buckle rotates together (you can understand it)
猜你喜欢

Video game design report template and resources over the years

Leetcode high frequency question 56. merge intervals, merge overlapping intervals into one interval, including all intervals

关于构建网络安全知识库方向相关知识的学习和思考

onBlur和onChange冲突解决方法

kali简洁转换语言方法(图解)

zabbix管理员忘记登录密码

Detailed explanation of address bus, data bus and control bus

The accuracy of yolov7 in cracking down on counterfeits, not all papers are authentic

老虎口瀑布:铜梁版小壶口瀑布

Learning and thinking about the relevant knowledge in the direction of building network security knowledge base
随机推荐
Comparison of traversal speed between map and list
Various searches (⊙▽⊙) consolidate the chapter of promotion
C unsafe unmanaged object pointer conversion
清除字符串中所有空格
“00后”来了!数睿数据迎来新生代「无代码」生力军
老虎口瀑布:铜梁版小壶口瀑布
Rasa 3.x learning series -rasa [3.2.4] - 2022-07-21 new release
TypeError: Cannot read property ‘make‘ of undefined
zabbix管理员忘记登录密码
Learning and thinking about the relevant knowledge in the direction of building network security knowledge base
Typo in static class property declarationeslint
PrestoUserError: PrestoUserError(type=USER_ERROR, name=INVALID_FUNCTION_ARGUMENT, message=“Escape st
Leetcode high frequency question 56. merge intervals, merge overlapping intervals into one interval, including all intervals
Activity Registration: how to quickly start the open source tapdata live data platform on a zero basis?
Not configured in app.json (uni releases wechat applet)
C multithreaded lock collation record
Clear all spaces in the string
Google Earth Engine——使用MODIS数据进行逐月数据的过火(火灾)面积并导出
The accuracy of yolov7 in cracking down on counterfeits, not all papers are authentic
Rasa 3.x 学习系列-Rasa FallbackClassifier源码学习笔记