使用JS操作MongoDB
使用mongoose连接MongoDB数据库
下载mongoDB需要的依赖
npm i mongoose --save
/**
* 1.下载
* npm i mongoose --save
* 2.在项目中引入mongoose
* var mongoose = require ( "mongoose") ;
* 3.连接MongoDB数据库
* mongoose.connect ( 'mongodb://数据库的ip地址:端口号/数据库名',{ useMongoclient: true}
* -如果端口号是默认端口号(27017)则可以省略不写
*
* -监听MongoDB数据库的连接状态
* -在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接
* 通过监视该对象的状态,可以来监听数据库的连接与断开
*
* 4.断开数据库连接(一般不需要调用)
* mongoose.disconnect ()
* -监听MongoDB数据库的连接状态
* -在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接
* 通过监视该对象的状态,可以来监听数据库的连接与断开
*
* 数据库连接成功的事件
* mongoose.connection.once ( "open" ,function () { } ) ;
*
* 数据库断开的事件
* mongoose.connection.once ( "close" ,function () { } );
*/
//引入mongoose
let mongoose=require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/student")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
mongoose.connection.once("close",function () {
console.log("数据库以断开~~~~")
}) ;
//关闭数据库
mongoose.disconnect()
实现新增操作
//引入mongoose
let mongoose=require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/test")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
//将mongoose.schema赋值给一个变量
var Schema=mongoose.Schema;
//创建Schema(模式)对象
let stuSchema=new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
})
//通过schema来创建Model
//Model代表的是数据库中的集合,通过Model才能对数据库进行操作
// mongoose.model (modelName, schema ) :
//modelName就是要映射的集合名 ,student默认会加上s
//let StuModel=mongoose.model("student",stuSchema);
//向数据库中插入一个文档
StuModel.create({
name:"张三",
age:18,
gender:"男",
address:"上海"
},function (err) {
if (!err){
console.log("插入成功")
}
})
//插入多条
let StuModel=mongoose.model("student",stuSchema);
StuModel.create([
{
name:"李四",
age:18,
gender:"男",
address:"上海"
},
{
name:"王五",
age:18,
gender:"男",
address:"上海"
}
],function (err) {
if (!err){
console.log("插入成功")
}
})
实现查询操作
//引入mongoose
let mongoose=require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/test")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
//将mongoose.schema赋值给一个变量
var Schema=mongoose.Schema;
//创建Schema(模式)对象
let stuSchema=new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
})
/**
* 查询操作
*/
let StuModel=mongoose.model("student",stuSchema);
//查询操作 查询全部 StuModel.find({name:"张三"},function (err,docs) { 根据名称查询查询多条
StuModel.find({},function (err,docs) {
if (!err){
console.log(docs)
}
})
//根据名称查询
StuModel.findOne({name:"张三"},function (err,docs) {
if (!err){
console.log(docs)
}
})
//根据id查询
StuModel.findById("6245bea8c7ce1e8156787ce1",function (err,docs) {
if (!err){
console.log(docs)
//判断Docs是StuModel的实例
console.log(docs instanceof StuModel)
}
})
实现修改操作
//引入mongoose
let mongoose=require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/test")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
//将mongoose.schema赋值给一个变量
var Schema=mongoose.Schema;
//创建Schema(模式)对象
let stuSchema=new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
})
let StuModel=mongoose.model("student",stuSchema);
/**
*修改操作
* Model.update (conditions, doc, [options] , [callback ])
* Model.updateMany (conditions,doc,[options] , [callback ])odel.
* updateOne (conditions, doc,[options] ,[callback ] )
* -用来修改一个或多个文档
* -参数:
* conditions查询条件
* doc 修改后的对象
* options配置参数
* callback回调函数
*/
//修改张三的年龄为100
StuModel.updateOne({name:"张三"},{$set:{age:100}},function (err) {
if (!err){
console.log("修改成功")
}
})
实现删除操作
//引入mongoose
let mongoose=require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/test")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
//将mongoose.schema赋值给一个变量
var Schema=mongoose.Schema;
//创建Schema(模式)对象
let stuSchema=new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
})
let StuModel=mongoose.model("student",stuSchema);
/**
* 删除操作
* Model.remove (conditions, [callback ] )
* Model.deleteone (conditions, [callback ] )
* Model.deleteMany (conditions, [callback])
*/
StuModel.remove({name:"李四"},function (err) {
if (!err){
console.log("删除成功")
}
})
Document操作MongoDB
//引入mongoose
let mongoose=require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/test")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
//将mongoose.schema赋值给一个变量
var Schema=mongoose.Schema;
//创建Schema(模式)对象
let stuSchema=new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
})
let StuModel=mongoose.model("student",stuSchema);
//创建以Document
let stu=new StuModel({
name:"老八",
age:18,
gender:"男",
address:"上海"
})
//保存方法
/**
stu.save(function (err) {
if (!err){
console.log("保存成功~~~~")
}
})
*/
//查询一个对象第一个
StuModel.findOne({},function (err,doc) {
if (!err){
//console.log(doc)
//修改
// doc.update({$set:{age:30}},function (err) {
// if (!err){
// console.log("修改成功~~~~")
// }
// })
// //或者
// doc.age=10;
// doc.save();
//
// //删除操作
// doc.remove(function (err) {
// if (!err){
// console.log("删除第一个")
// }
// })
//获取单个属性的id值
// let id=doc.id
// console.log(id)
//转json
// doc=doc.toJSON();
// console.log(doc)
//装Object
doc=doc.toObject();
console.log(doc);
}
})
mongoose模块化
在toos包下新建以文件夹新建一个conn_mongodb.js文件
/**
* 定义 一个模块用于连接mongodb
* @type {{readonly default: module:mongoose} | module:mongoose}
*/
let mongoose=require("mongoose");
mongoose.connect("mongodb://127.0.0.1/test")
mongoose.connection.once("open",function () {
console.log("数据库连接成功~~~~")
}) ;
新建models包下新建以student.js的模型类
/**
*定义一个Student的模型
*/
let mongoose=require("mongoose")
var Schema=mongoose.Schema;
//创建Schema(模式)对象
let stuSchema=new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
})
//定义模型
let StuModel=mongoose.model("student",stuSchema);
module.exports=StuModel;
新建一个index.js的类
//引入mongodb
require("./toos/conn_mongodb")
//引入模型
let Studnet=require("./models/Student");
Studnet.find({},function (err,docs) {
if (!err){
console.log(docs)
}
})