一、mongodb简介Mongodb是一个基于分布式文件存储的数据库,用C++语言编写,主要用于为web应用提供可伸缩的高性能数据存储解决方案。MongoDB是介于关系型数据库和非关系型数据库之间的产物。它是非关系数据库中功能最强的,与关系数据库最相似。它支持的数据结构非常松散,是一种类似于json的bson格式,因此可以存储更复杂的数据类型。Mongo最大的特点就是它支持的查询语言非常强大。它的语法有点类似于面向对象的查询语言。几乎可以实现大部分类似关系型数据库单表查询的功能,还支持对数据建立索引。bson示例:{name:"MongoDB",type:"bson",data:{id:1,code:123456}}bson和json的区别:①更快的遍历速度bson会将数据长度存储在header中,方便检索②修改某个数的操作比较容易,比如从9变成10,数据长度变了,所有的内容都要往回移一位。bson可以指定数据列,修改的只是数据列,但是如果数据从整型变成长整型,也会导致数据变长。③新增数据类型bson,增加字节数组数据类型,保存为json时无需转base64。分布式计算的优点:可靠性(容错):分布式计算系统的一个重要优点是可靠性。一台服务器上的系统崩溃不会影响其余服务器。可扩展性:在分布式计算系统中,可以根据需要添加更多的机器。资源共享:共享数据对于银行、预订系统等应用程序至关重要。灵活性:由于系统非常灵活,很容易安装、实施和调试新的服务。更快的速度:分布式计算系统可以拥有多台计算机的计算能力,使其比其他系统更快。开放系统:由于是开放系统,所以可以在本地或远程访问服务。更高的性能:与集中式计算机网络集群相比,它可以提供更高的性能(以及更好的性价比)。缺点:软件少、网络问题、安全什么是关系型数据库?关系数据库是指使用关系模型来组织数据的数据库。它以行和列的形式存储数据,以便于用户理解。一系列的行和列称为一个表,一组表组成一个数据库。用户通过查询来检索数据库中的数据,查询是用于限制数据库中某些区域的可执行代码。关系模型可以简单理解为二维表模型,关系数据库是由二维表及其之间的关系组成的数据组织。关系型数据库:Oracle、DB2、MySQL、MicrosoftSQLServer、MicrosoftAccess等。什么是非关系型数据库是指非关系型、分布式、数据以键值对的形式存储,结构不是固定的。严格来说应该是一种数据结构化存储方式的集合。集合不足:只能存储简单的数据,不支持事物。2.mongodb的特点:1.易于存储的对象类型数据的面向集合存储2.模式自由3.支持动态查询4.支持全索引等3.MongoDB数据模型MonogoDB可以构建多个数据库,每个数据库都有自己的权限和集合,不同的数据库也放在不同的文件中。一个MongoDB实例可以包含一组数据库,一个DataBase可以包含一组Collection(集合),一个集合可以包含一组Document(文档)。一个Document包含一组字段(fields),每个字段是一个键/值对。key:必须是字符串类型。value:可以包含以下类型。●基本类型,如string、int、float、timestamp、binary等。●文档。●数组类型。4.nodejsnodejs是一个基于v8引擎的js运行环境,它采用事件驱动、非阻塞I/O模型使其轻量高效。V8是支持谷歌浏览器的JavaScript引擎的名称。使用Chrome浏览时,它会处理和执行JavaScript。V8用c++语言编写,可移植,可以在Mac、Windows、Linux等一些系统上运行nodejs使用commonJs模块系统浏览器使用es5模块标准nodejs使用require()浏览器使用import()nodejs+mongodb使用varmongoClient=require('mongodb').mongoClient;varurl='mongodb://localhost:27017/runoob'mongoClient.connects(url,function(){if(err)throwerr;vardbData=db.db('runoob');//创建一个集合dbData。createCollection('site',function(){db.close()//关闭数据库})//插入数据varstr={name:"张三"};dbData.collection('site').insertOne(str,function(err,data){db.close()})//插入多条数据insertMany()varstr2={$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}ascending-1descending//分页find().limit(2)//跳过find().skip(2)})
