1.MongoDB介绍

简介

MongoDB是一个开源的,非关系型数据库,是用C++开发的;
官网地址
MongoDB 按照BJSON格式存储数据,比传统的行列更具有表现力,它可以存储多个子集合,也可以存储数组;

  • 传统表的列数都是固定的,而MongoDB则不必遵循;
  • 传统表的列类型是固定的,而MongoDB可以混合列类型;
  • MongoDB也可以指定就校验类型;

MongoDB是文件型数据库,不是文件数据库,它适合存储文件,别的也都可以存储;

概念对比

SQL术语/概念 MongoDB术语/概念 解释/说明
database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持,但它支持子文档查询
primary key primary key 主键,MongoDB自动将_id字段设置为主键

_id 是主键 ,而不是id/ID需要牢记,多学习一些基础知识减少试错的范围;

特点和功能

高性能、易部署、易使用、存储数据非常方便

  • 支持子对象,数组,以及嵌套对象
  • 灵活动态的表结构
  • 面向集合存储,适合存储对象及JSON形式的数据
  • 支持动态查询 支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组
  • 使用高效的二进制数据存储
  • 自动处理碎片
  • 支持C#、Java、Python,Js,C++ 驱动比较多
  • 查询监视:Mongo包含一个监视工具用于分析数据库操作的性能;

适用场合

  • 网站数据:
  • 缓存
  • 大尺寸、低价值的数据
  • 高伸缩的场景:
  • 用于对象以及JSON数据的存储:Mongo的BJSON 数据格式非常适合文档化格式的存储以及查询;

实际例子

数据自然,高效,面向对象

eg1:比如一条客户记录,下面是BDocument中展示的样子,

{
  "_id": "5cf0029caff5056591b0ce7d",
  "firstname": "Jane",
  "lastname": "Wu",
  "address": {
    "street": "1 Circle Rd",
    "city": "Los Angeles",
    "state": "CA",
    "zip": "90404"
  },
  "hobbies": ["surfing", "coding"]
}

我若用关系型数据库那么我应该建立三个表,当数据过多的时候关联性查询是特别慢的;

面向对象是指:因为对象里面有子对象,对象里面有数组,关系型数据库一行记录就是一个对象;

eg2:比如淘宝数据,建立一个商品,商品有属性,有多规格

比如规格颜色:红,黑,白

比如尺寸:大中小

比如价格:50,100,50,100,50,100,50,100,100

比如库存:

这里特别说明:属性有

eg3:一条主表记录 关联着几条明细表记录

常见问题

  • MongoDB不直接支持SQL语句,它有自己的一套查询语法,但是我们可以用Linq
posted @ 2020-05-22 16:06  maanshancss  阅读(173)  评论(0编辑  收藏  举报