数据库 - MongoDB基础知识1
1.爬虫 - Scrapy框架安装使用12.数据库 - MongoDB基础语法2
3.数据库 - MongoDB基础知识1
4.数据库 - MongoDB安装5.文档数据存储6.爬虫 - Scrapy框架安装使用27.数据库 - MySql语句8.爬虫 - 基础类总集9.K8S安装流程10.Docker简介安装11.Docker常用命令12.Docker容器数据卷13.DockerFile14.爬虫 - Request库简介15.爬虫 - Selenium简介16.Python处理Word,Excel,PDF17.数据分析 - 理论简介18.数据分析 - NumPy模块19.数据分析 - Pandas模块20.数据分析 - Matplotlib模块21.爬虫 - 网页解析库22.Android自动化 - 环境准备23.Android自动化 - 基础总集24.Python一些简单基础的模板化语法MongoDB 是功能强大、灵活且易于扩展的通用型数据库。它融合了二级索引、范围查询、排序、聚合以及地理空间索引等诸多特性。本章介绍 MongoDB 的主要设计决策。
MongoDB 功能强大且易于上手,本笔记介绍 MongoDB 的一些基本概念
本笔记根据《MongoDB权威指南(第3版)》整合而成
基础构成
_id
每个文档都有一个特殊的键 "_id",其在所属的集合中是唯一的
文档
是MongoDB中数据的基础单元,类似于关系型数据库管理系统中的行
文档就是键值对的一个有序集,大多数文档包含多个键值对例如:
{"foo":3,"Foo":"3"}
1. 文档的值可以是多种不同的数据类型
2. 文档的建是字符串,不能含有空字符,.和$有特殊意思,只能在特定环境下使用
3. 区分类型且区分大小写,且键不能重复
4. 键值对是有序的,{"x":1,"y":2}与{"y":2,"x":1}是不一样的
集合
可以看做是一个拥有动态模式的表,一个集合里的文档可以各式各样的
{"greeting":"hello world!"}
{"foo":3}
上面俩个文档可以存储在一个集合里
既然如此,为什么还需要多个集合呢?
- 获取集合列表比提取集合中的文档类型列表要快得多,便于管理
- 将相同类型的文档放入同一个集合中可以实现数据的局部性
- 在创建索引(尤其是在创建唯一索引)时,我们会采用一些文档结构。这些索引是按照每个集合来定义的。通过只将单一类型的文档放入集合中,可以更高效地对集合进行索引。
数据库
在MongoDB中,多个文档组成集合,而多个集合可以组成数据库
每个数据库可以拥有0个或者多个集合
数据类型
在概念上,MongoDB的文档和JavaScript中的对象相近,因而可认为它类似于json
- null
空值或不存在的值{"x":null}
- 布尔型
布尔有俩个值true和false{"x":true,"y":false}
- 数值
- shell默认使用64位浮点数
{"x":3.14,"y":3}
- 对于整型值,可以用NumberInt类(表示4字节带符号整数)或者NumberLong类(表示8字节带符号整数)
{"x":NumberInt("3")} {"x":NumberLong("3")}
- 字符串,UTF-8字符串都可表示为字符串类型的数据
{"x":"hello"}
- 日期
日期被存储为自新纪元以来经过的毫秒数,不存储时区{"x":new Date()}
- 正则表达式
查询时,使用正则表达式作为限定条件,语法也与JavaScript的正则表达式语法相同{"x":/foobar/i}
- 数组
数据列表或数据集可以表示为数组{"x":["a","b","c"]}
- 内嵌文档
文档也可嵌套文档,被嵌套的文档作为父文档的值{"x":{"foo":"hello"}}
- 对象id
对象id是一个12字节的id,是文档的唯一标识{"x":ObjectId()}
- 二进制数据
二进制数据是一个任意字节的字符串。它不能直接在shell中使用。如果非要将非UTF-8字符保存到数据库中,二进制数据是唯一的方式 - 代码
查询和文档中可以包括任意JavaScript代码
合集:
基础
分类:
数据库 / MongDB
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性