Mongodb与Sql相比,有何大不同?
MongoDB是基于文档的存储的(而非表),是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。模式自由(schema-free),意味着对于存储在MongoDB数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。Mongo主要解决的是海量数据的访问效率问题。因为Mongo主要是支持海量数据存储的,所以Mongo还自带了一个出色的分布式文件系统GridFS,可以支持海量的数据存储。由于Mongo可以支持复杂的数据结构,而且带有强大的数据查询功能,因此非常受到欢迎。
Mongodb使用方法:REPL环境 read eval print loop
1.去官网下载mongodb 版本3.6 https://www.mongodb.com/download-center/community
https://mongoosejs.com/docs/api.html#Model
2.配置环境变量
3. mongod --dbpath
文件夹的路径 --port端口号 运行mongodb

mongodb的常用指令
show dbs
列出所有的数据库名字
use db
连接某个数据mongodb的常用函数
向数据库的集合中插入一个或多个文档 文档的格式是json db.collection.insert(文档)
db.collection.find({sex:'男'}) 查询所有sex是男的文档
db.collection.findOne({sex:'男'}) 查询一个sex是男的文档
db.collection.remove({name:xiaoming})删除所有name是xiaoming的文档
db.collection.remove({name:xiaoming},1)删除name是heaven的一个文档
db.collection.update({name:xiaoming},{$set:{name:'小明'}})
把name是xiaoming的文档 修改成 name是小明 ,只会修改一个文档
db.collection.update({name:xiaoming},{$set:{name:'小明'}},{multi:true})
把name是xiaoming的文档 修改成 name是小明 ,只会修改多个文档
mongodb数据库的组成
1.集合 集合是由文档组成的 很多集合组成了一个数据库
2.文档

Mongoose模块是将mongodb与node.js的链接起来的模块,将mongodb的数据传到node中接收,然后又发送给前台显示的一个模块。mongoose是一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易。
使用mongoose的方法:
1. 使用npm引入mongoose模块。
2.创建链接映入mongodb库mongoose.connect('mongodb://localhost:27017/student')
3. 设置mongodb数据类型,定义数据库student中的数据的格式
4. 向集合中添加文档 集合名字 自动加s 大写变小写

Mongoose其他使用方法:1.查找
Student.find({name:'
海文'},(err,results)=>{
console.log(err,results);})

2.删除
Student.deleteOne({name:'heaven'},(err,result)=>{
console.log(err,result); })
3.修改
Student.updateOne({name:'heaven'},{$set:{name:'
海文'}},(err,result)=>{
console.log(err,result);})
4.向数据库添加文档
xiaoming.save();