240
我爱毛绒绒~~~~~~~

数据库 - MongoDB基础知识1

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}

上面俩个文档可以存储在一个集合里

既然如此,为什么还需要多个集合呢?

  1. 获取集合列表比提取集合中的文档类型列表要快得多,便于管理
  2. 将相同类型的文档放入同一个集合中可以实现数据的局部性
  3. 在创建索引(尤其是在创建唯一索引)时,我们会采用一些文档结构。这些索引是按照每个集合来定义的。通过只将单一类型的文档放入集合中,可以更高效地对集合进行索引。

数据库

在MongoDB中,多个文档组成集合,而多个集合可以组成数据库
每个数据库可以拥有0个或者多个集合

数据类型

在概念上,MongoDB的文档和JavaScript中的对象相近,因而可认为它类似于json

  • null
    空值或不存在的值
    {"x":null}
    
  • 布尔型
    布尔有俩个值true和false
    {"x":true,"y":false}
    
  • 数值
    1. shell默认使用64位浮点数
    {"x":3.14,"y":3}
    
    1. 对于整型值,可以用NumberInt类(表示4字节带符号整数)或者NumberLong类(表示8字节带符号整数)
    {"x":NumberInt("3")}
    {"x":NumberLong("3")}
    
    1. 字符串,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代码
posted @   水开白  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示