基础入门
1. MongoDB:一种非关系型数据库,偶数版本为稳定版,奇数版本为开发版。
2. MongoDB对于32位系统支持不佳,所以3.2版本以后没有再对32位系统的支持。
3. MongoDB中,数据库(database)->集合(collections)->文档(document),单位级别逐级变小。
4. 下载地址:Downloads for win32
5. windows64位4.2.16版本安装:
- 下载安装包后直接安装。
- 配置bin目录环境变量
- 直接命令mongod启动mongodb服务会默认在C盘下寻找data\db文件夹,需要自行创建
- 或者指定端口和路径:mongod --dbpath 数据库路径 --port 端口
- mongodb服务成功启动
- cmd窗口输入mongo命令连接数据库
基本命令
在MongoDB中,数据库和集合都不需要手动创建,当我们创建文档时,如果文档所在的集合或数据库不存在会自动创建数据库和集合
官网操作文档:https://docs.mongodb.com/manual/crud/
1. 显示当前的所有数据库
- show dbs
- show databases
2. 进入到指定的数据库中
- use 数据库名
3. 显示当前使用的数据库
- db
4. 显示数据库中所有的集合
- show collections
5. 新增文档
当我们向集合中插入文档时,如果没有给文档指定_id属性,则数据库会自动为文档添加_id,该属性用来作为文档的唯一标识,_id我们可以自己指定,如果我们指定了数据库就不会在添加了,如果自己指定_id 也必须确保它的唯一性。
- db.collection.insertOne({ }):插入一个文档对象
- db.collection.insertMany([ ]):插入多个文档对象
- db.collection.insert():向集合中插入一个或多个文档
db.products.insertOne( { _id: 10, item: "box", qty: 20 } );
db.products.insertMany( [
{ _id: 10, item: "large box", qty: 20 },
{ _id: 11, item: "small box", qty: 55 },
{ _id: 12, item: "medium box", qty: 30 }
] );
6. 查询文档
- db.collection.find({属性:值}):用来查询所有符合条件的文档,返回的是一个数组
- db.collection.findOne({属性:值}):用来查询集合中符合条件的第一个文档对象
- db.collection.find({}).count():查询所有结果的数量
7. 修改文档
- db.collection.update(条件,新对象)
- 默认情况下会使用新对象来替换旧对象,只会修改第一个满足条件的对象
- 如果需要修改指定的属性,需要使用“修改操作符”来完成修改
- $set 可以用来修改文档中的指定属性
- $unset 可以用来删除文档的指定属性
- db.collection.updateMany():同时修改多个符合条件的文档
- db.collection.updateOne():修改一个符合条件的文档
- db.collection.replaceOne():替换一个文档
8. 删除文档
- db.collection.remove():删除一个或多个,可以第二个参数传递一个true,则只会删除一个;如果传递一个空对象作为参数,则会删除所有的,一个接一个循环删除,效率低。
- db.collection.deleteOne():删除一个
- db.collection.deleteMany():删除多个
- db.collection.drop():直接删除集合,当数据库下不存在集合,自动删除数据库
- db.dropDatabase() :删除数据库
9. 替换文档
- db.collection.remove(旧对象,新对象) :用新对象替换旧对象
10. sort({key:1/-1})排序函数,1表示升序,-1表示降序。
11. db.collection.find({条件},{key:1/0}):筛选查出的字段,1表示显示,0表示不显示
Mongoose介绍
1. Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。
2. Mongoose优点:
- 可以为文档创建一个模式结构(Schema)
- 可以对模型中的对象/文档进行验证
- 数据可以通过类型转换转换为对象模型
- 可以使用中间件来应用业务逻辑挂钩
- 比Node原生的MongoDB驱动更容易
3. 提供的三个对象:
- Schema(模式对象):定义约束了数据库中的文档结构
- Model:作为集合中所有文档的表示,相当于MongoDB数据库中集合Collection
- Document:表示集合中的一个具体文档
4. node命令下载安装:npm i mongoose --save
5. 连接测试:
- MongoDB数据库,一般情况下,只需要连接一次,连接一次以后,除非项目停止服务器关闭,否则连接一般不会断开
- 在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接,可以用来监听MongoDB数据库的连接状态
//引入
var mongoose = require("mongoose");
//连接数据库mongoose.connect('mongodb://数据库的ip地址:端口号/数据库名'
mongoose.connect("mongodb://127.0.0.1/mongoose_test" , { useMongoClient: true});
//数据库连接成功的事件
mongoose.connection.once("open",function(){
console.log("数据库连接成功~~~");
});
//数据库断开的事件
mongoose.connection.once("close",function(){
console.log("数据库连接已经断开~~~");
});
//断开数据库连接(一般不需要调用)
mongoose.disconnect();
6. Mongoose中文文档:http://www.mongoosejs.net/docs/index.html