一、mongodb 简介
mongodb 是一个基于 分布式文件存储 的数据库,由 c++ 语言 编写,次要用于 web 利用提供可扩大的高性能数据存储解决方案。
mongodb 是一个介于 关系数据库 和非关系数据库 之间的产品,是非关系数据库当中性能最丰盛,最像关系数据库的。它反对的数据结构十分涣散,是相似 json 的bson格局,因而能够存储比较复杂的数据类型。Mongo 最大的特点是它反对的查询语言十分弱小,其语法有点相似于面向对象的查询语言,简直能够实现相似关系数据库单表查问的绝大部分性能,而且还反对对数据建设索引。
bson 示例:
{
name: "MongoDB",
type: "bson",
data: {
id: 1,
code: 123456
}
}
bson 与 json 区别:
①更快的遍历速度
bson 会把数据长度存于头部,不便检索
②操作更繁难
批改某个数字,如从 9 变成 10,数据长度产生了变动,所有的内容都要往后后移一位。bson 则是能够指定数据列,批改的只是那一位数据列,然而如果数据由整型变成长整型,也是会导致数据变长的。
③减少了额定的数据类型
bson 减少了 byte array 数据类型,不须要先转成 base64 在存成 json。
分布式计算的长处:
可靠性(容错):
分布式计算零碎中的一个重要的长处是可靠性。一台服务器的零碎解体并不影响到其余的服务器。
可扩展性:
在分布式计算零碎能够依据须要减少更多的机器。
资源共享:
共享数据是必不可少的利用,如银行,预订零碎。
灵活性:
因为该零碎是非常灵活的,它很容易装置,施行和调试新的服务。
更快的速度:
分布式计算零碎能够有多台计算机的计算能力,使得它比其余零碎有更快的处理速度。
开放系统:
因为它是凋谢的零碎,本地或者近程都能够拜访到该服务。
更高的性能:
相较于集中式计算机网络集群能够提供更高的性能(及更好的性价比)。
毛病:软件少,网络问题,安全性
什么是关系数据库
关系型数据库,是指采纳了关系模型来组织数据的数据库,其以 行和列 的模式存储数据,以便于用户了解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查问来检索数据库中的数据,而查问是一个用于限定数据库中某些区域的执行代码。关系模型能够简略了解为 二维表格 模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
关系数据库:Oracle、DB2、MySQL、Microsoft SQL Server、Microsoft Access 等
什么是非关系数据库
指非关系型的,分布式的,数据以键值对的模式存储,构造不固定。
严格意义上应该是一种数据结构化存储办法的汇合
有余:只能存储简略的数据,不反对事物
二、mongodb 的特点:
1、面向汇合存储易存储对象类型的数据
2、模式自在
3、反对动静查问
4、反对齐全索引等
三、mongodb 数据模型
monogoDB 能够建多个数据库,每个数据库都有本人的权限和汇合,不同的数据库也搁置在不同文件中。
一个 MongoDB 实例能够蕴含一组数据库,一个 DataBase 能够蕴含一组 Collection(汇合),一个汇合能够蕴含一组 Document(文档)。一个 Document 蕴含一组 field(字段),每一个字段都是一个 key/value pair。
key: 必须为字符串类型。
value:能够蕴含如下类型。
● 根本类型,例如,string,int,float,timestamp,binary 等类型。
● 一个 document。
● 数组类型。
四、nodejs
nodejs 是一个基于 v8 引擎的 js 运行环境,应用了事件驱动、非阻塞式 I/O 的模型, 使其轻量又高效,V8 是为 Google Chrome 提供反对的 JavaScript 引擎的名称。当应用 Chrome 进行浏览时,它负责解决并执行 JavaScript。
v8 有 c ++ 语言编写,是可移植的,且可运行于 Mac、Windows、Linux 和其余一些零碎
nodejs 应用 commonJs 模块零碎 浏览器应用 es5 模块规范
nodejs 应用 require()浏览器应用 import()
nodejs+mongodb 应用
var mongoClient = require('mongodb').mongoClient;
var url = 'mongodb://localhost:27017/runoob'
mongoClient.connects(url, function() {if (err) throw err;
var dbData = db.db('runoob');
// 创立汇合
dbData.createCollection('site', function() {db.close()// 敞开数据库
})
// 插入数据
var str = {name: "张三"};
dbData.collection('site').insertOne(str, function(err,data) {db.close()
})
// 插入多条数据 insertMany()
var str2 = {$set: { "url" : "https://www.abc.com"}};
// str 为查问条件
dbData.collection('site').insertMany(str, str2, function(){db.close()
})
// 查问数据 find()
// 查问指定数据 find({name: "张三"})
// 更新数据 updateOne()
// 更新多条数据 updateMany()
// 删除数据 deleteOne()
// 删除多条数据 deleteMany()
// 排序 sort(type) type = {type: 1}升序 -1 降序
// 分页 find().limit(2)
// 跳过 find().skip(2)
})