Mongoose基本知识

Mongoose

1、MongoDB入门_mongoose简介

`/*使用步骤1.下载安装mongoosenpm install --save mongoose2.在项目中引入mongoosevar mongoose = require("mongoose");3.连接Mongoose数据库mongoose.connect('mongodb://数据库IP地址:端口号/数据库名', {useNewUrlParser: true,useUnifiedTopology: true});- 如果端口号是默认端口号(27017)则可以省略不写4.断开数据库连接(一般不需要调用)- MongoDB数据库,一般情况下,只需要连接一次,连接一次以后,除非项目停止服务器关闭,否则连接一般不会断开- mongoose.disconnect();- 监听MongooDB数据库的连接状态- 在mongoose对象中,有一个属性叫做connection;该对象表示的就是数据库连接- 通过监视该对象状态,可以监听数据库的连接与断开数据库连接成功的事件mongoose.connection.once("open",function(){});数据库连接断开的事件mongoose.connection.once("close",function(){});*/// 1.在项目中引入mongooseconst mongoose = require('mongoose');// 2.连接Mongoose数据库mongoose.connect('mongodb://127.0.0.1/mongoose_test', {useNewUrlParser: true,useUnifiedTopology: true});mongoose.connection.once("open",function(){console.log("数据库连接成功");});mongoose.connection.once("close",function(){console.log("数据库连接已断开");});// 断开数据库连接mongoose.disconnect();`

2.MongoDB入门_Schema和Model

`var mongoose = require("mongoose");mongoose.connect("mongodb://127.0.0.1/mongoose_test", {useNewUrlParser: true,useUnifiedTopology: true});mongoose.connection.once("open", function () {console.log("数据库连接成功")});// 1.创建Schemavar Schema = mongoose.Schema;// 2.创建Schema(模式)对象var stuSchema = new Schema({name: String,age: Number,gender: {type: String,default: "female"},address: String});// 3.通过Schema来创建Model// Model代表的是数据库中的集合,通过Model才能对数据库进行操作// mongoose.model(modelName,schema);// modelName 就是要映射的集合名 mongoose会自动将集合名变成复数var StuModel = mongoose.model('student', stuSchema);// 向数据库中插入一个文档// Student.create(doc,function(){});StuModel.create({name: "白骨精",age: 16,address: "白骨洞"}, function (error) {if (error) {console.log(error);} else {console.log("插入成功");}});`

3.MongoDB入门_Model的方法

`var mongoose = require("mongoose");mongoose.connect("mongodb://127.0.0.1/mongoose_test", {useNewUrlParser: true,useUnifiedTopology: true});mongoose.connection.once("open", function () {console.log("数据库连接成功")});var Schema = mongoose.Schema;var stuSchema = new Schema({name: String,age: Number,gender: {type: String,default: "female"},address: String});var StuModel = mongoose.model('student', stuSchema);/*- 有了Model,我们就可以来对数据库进行增删改查的操作了Model.create(doc(s),[callback])- 用来创建一个或多个文档并添加到数据库中- 参数:doc(s) 可以是一个文档对象,也可以是一个文档对象的数组callback 当操作完成以后回调函数查询:Model.find(conditions,projection,options,callback)- 查询所有符合条件的文档Model.findById(id ,projection,options,callback)- 根据文档ID属性查询文档Model.findOne(conditions,projection,options,callback)- 查询符合条件的第一个文档 总会返回一个具体的文档对象conditions 查询的条件projection 投影 需要获取到的字段- 两种方式- 1. {name:1,_id:0}- 2. 'name -_id'options 查询选项(skip,limit)callback 回调函数,查询结果会通过回调函数返回回调函数必传,如果不传回调函数,压根不会查询*//*StuModel.find({name: "唐僧"}, function (error, docs) {if (error) {console.log(error);} else {console.log(docs);}});*//*StuModel.find({}, {name: 1, _id: 0}, function (error, docs) {if (error) {console.log(error);} else {console.log(docs);}});*//*StuModel.find({}, 'name age -_id', {skip: 3, limit: 1}, function (error, docs) {if (error) {console.log(error);} else {console.log(docs);}});*/// findOne 查询出来的直接是对象,可以直接.// find 查询出来的是数组,[]./*StuModel.findOne({}, function (error, doc) {if (error) {console.log(error);} else {console.log(doc);}});*//*StuModel.findById('5de71a059b94874534d94ce7', function (error, doc) {if (error) {console.log(error);} else {console.log(doc);// 通过find()查询的结果,返回的对象,就是Documnet,文档对象// Document对象是model的实列}});*//*StuModel.create([{name: "沙和尚",age: 38,gender: "male",address: "流沙河"}], function (error) {if (error) {console.log(error);} else {console.log("插入成功");console.log(arguments);}});*//*修改Model.update(conditions,doc,options,callback)Model.updateOne(conditions,doc,options,callback)Model.findMany(conditions,doc,options,callback)- 用来修改一个或多个文档- 参数conditions 查询的条件doc 修改后的对象options 配置参数callback 回调函数*//*StuModel.updateOne({name: "唐僧"}, {$set: {age: 20}}, function (error) {if (error) {console.log(error);} else {console.log("修改成功");}});*//*删除Model.remove(conditions,callback)Model.deleteOne(conditions,callback)Model.deleteMany(conditions,callback)*//*StuModel.deleteOne({name: "白骨精"}, function (error) {if (error) {console.log(error);} else {console.log("删除成功");}});*//*Model.countDocuments(conditions,[callback]);- 统计文档的数量*/StuModel.countDocuments({}, function (error, count) {if (error) {console.log(error)} else {console.log(count)}});
`

4.MongoDB入门_Document的方法

`/*Document 和 集合中的文档一一对应,Document是Model的实列通过Model查询到的结果都是Document*/// 创建一个Documentvar mongoose = require("mongoose");mongoose.connect("mongodb://127.0.0.1/mongoose_test", {useNewUrlParser: true,useUnifiedTopology: true});mongoose.connection.once("open", function () {console.log("数据库连接成功")});var Schema = mongoose.Schema;var stuSchema = new Schema({name: String,age: Number,gender: {type: String,default: "female"},address: String});var StuModel = mongoose.model('student', stuSchema);// 创建一个Documentvar stu = new StuModel({name: "奔波霸",age: 48,gender: "male",address: "碧波潭"});/*document的方法Document.prototype.save([options], [options.safe], [options.validateBeforeSave], [fn] )*//*stu.save(function (error) {if (!error) {console.log("保存成功");}});*/StuModel.findOne({}, function (err, doc) {if (!err) {/*update(update,[options],[callback])- 修改对象remove([callback])- 删除对象*/// console.log(doc);/*doc.update({$set: {age: 28}}, function (err) {if (!err) {console.log("修改成功")}});*//*doc.age = 18;doc.save();*//*doc.remove(function (err) {if (!err) {console.log("删除成功")}});*//*get(name)- 获取文档中的指定属性值set()- 设置文档指定的属性值id- 获取文档的_id属性值toJson()- 转换为一个JSON对象toObject()- 将Document对象转换为一个普通的JS对象转换为普通的js对象以后,注意所有的Document对象的方法或属性都不能使用*/// console.log(doc.get("name"));// console.log(doc.age);// doc.set("name","猪小小");// doc.name = "hahaha";// console.log(doc._id);// console.log(doc.toJSON());// var o = doc.toObject();// console.log(o);doc = doc.toObject();delete doc.address;console.log(doc);}});
`

5.MongoDB入门_mongoose的模块化

- 根目录/models/student.js- `/*用来定义student的模型*/var mongoose = require("mongoose");var Schema = mongoose.Schema;var stuSchema = new Schema({name: String,age: Number,gender: {type: String,default: "female"},address: String});// 定义模型var StuModel = mongoose.model("student", stuSchema);module.exports = StuModel;`
- 根目录/tools/conn_mongo.js- `/*定义一个模块,用来连接MonoDB数据库*/var mongoose = require("mongoose");mongoose.connect("mongodb://127.0.0.1/mongoose_test", {useNewUrlParser: true,useUnifiedTopology: true});mongoose.connection.once("open", function () {console.log("数据库连接成功")});`
- 根目录/05.index.js- `require("./tools/conn_mongo");var Student = require("./models/student");// console.log(Student);Student.find({}, function (err, docs) {if (!err) {console.log(docs);}});`


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部