mongoose 链接数据库,增删改查
根据个人编码习惯,仅供参考
如中途看的有点蒙圈,可以转到官网查看
引入模块
var mongoose = require("mongoose");连接数据库
mongoose.connect("mongodb://localhost/mongoose_test");链接状态
mongoose.connection.once("open",function () {
console.log("数据库链接成功");
});- 为了查看是否链接成功所以做一个回调
创建Schema(模式)对象
例:
var Schema = mongoose.Schema; //将mongoose.Schema 赋值给变量
//创建Schema对象
var stuSchema = new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
});
创建Model
通过Schema来创建Model
Model代表的是数据库中的集合 ,通过Model 才能对数据库进行操作,可在官网查看
语法:
mongoose.model(modelName, schema); 参数:modelName:要映射的集合名 特点:mongoose:会自动将集合名变成复数
例:
var StuModel = mongoose.model('student', stuSchema);增加(向数据库插入文档)
语法:
Model.create(doc(s),[callback]);//用来创建一个文档并添加到数据库中
参数:
dec(s)可以是一个文档对象也是可以是一个文档对象的数组[callback]可选的 回调函数
例:
StuModel.create({
name:"白骨精",
age:16,
address:"白骨洞"
},function (err) {
if(!err){
console.log("插入成功");
}
});查询
语法:
Model.find(conditions,[projection],[options],[callback]);//查询所有符合条件的文档 总会返回一个数组 Model.findById(id,[projection],[options],[callback]);//根据文档的id属性查询文档 Model.findOne([conditions],[projection],[options],[callback]);//查询符合条件的第一个文档 总是返回一个具体的文档对象
参数:
conditions查询条件projection投影(需要获取到的字段)- 第一种方式
{name:1,_id:0} - 第二种方式
"name -_id"
- 第一种方式
options查询的选项(skip limit)callback回调函数 查询结果通过回调函数返回 回调函数必传 如果不传回调函数 压根就不会查询
例:
StuModel.find({name:"唐僧"},function (err,docs) {
if(!err){
console.log(docs[0].name);
}
});
StuModel.find({},{name:1, _id:0},function (err,docs) {
if(!err){
console.log(docs);
}
});
StuModel.findById("5bac79be5fb5454418668515",function (err,doc) {
if(!err){
//通过find()查询的结果 返回的对象就是 Document 文档对象
//Document 对象是Model的实例
console.log(doc instanceof StuModel)
}
});修改
语法:
Model.update(conditions,doc,[options],[callback]);//用来修改一个或者多个文档 Model.updateMany(conditions,doc,[options],[callback]);//用来修改多个文档 Model.updateOne(conditions,doc,[options],[callback]);//用来修改一个文档 Model.replaceOne(conditions,doc,[options],[callback]);//替换一个
参数:
conditions查询条件doc修改后的对象options配置参数callback回调函数
删除
语法:
Model.remove(conditions,[callback]);//删除一个或者多个 Model.deleteOne(conditions,[callback]);//删除一个 Model.deleteMany(conditions,[callback]);//删除多个
例:
StuModel.remove({name:"白骨精"},function (err) {
if(!err){
console.log("删除成功");
}
})统计文档数量
语法:
Model.count(conditions,[callback])
例:
StuModel.count({},function (err,count) {
if(!err){
console.log(count);
}
});Document方法
Document 和 集合中的文档一一对应 Document 是Model 的实例,通过Model查询到结果都是Document
创建一个Document
var stu = new StuModel({
name:"蘇小小",
age:22,
gender:"male",
address:"上海"
});Document 的方法
语法:
Model#save([options],[fn]);
例:
stu.save(function (err) {
if(!err){
console.log("保存成功")
}
});修改,删除
语法:
修改对象: update(update,[options],[callback]); 删除对象: remove([callback]);
例:
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()
* - 获取文档中的指定属性值
* set(name,value)
* - 设置文档的指定属性值
* id
* - 获取文档的_id属性值
* toJSON()
* - 转换为一个json对象
* toObject()
* - 将Document 对象转换为一个普通的js对象,注意所有的Document对象的方法或属性都不能使用了
*/
//console.log(doc.get("name"))
/**
* 或
*/
// console.log(doc.name)
//doc.set("name","猪无能");
/**
* 或
*/
// doc.name = "天蓬元帅";
// console.log(doc._id);
// var j = doc.toJSON();
// console.log(typeof j);
var o =doc.toObject()
console.log(o)
}
});模块化
新建一个js文件,用来连接数据库
/**
*定义一个模块,用来连接mongodb数据库
*/
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/mongoose_test");
mongoose.connection.once("open",function () {
console.log("数据库链接成功");
});
-------------------------------------------------------------------
在新建一个js文件,用来创建student模型
/**
*用来定义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;
----------------------------------------------------------------
在需要调用的地方引入就可以了
/**
*定义一个模块,用来连接mongodb数据库
*/
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/mongoose_test");
mongoose.connection.once("open",function () {
console.log("数据库链接成功");
}); 相关推荐
mkhhxxttxs 2020-06-14
80500495 2020-06-14
80530895 2020-02-23
86211943 2019-12-20
lightlanguage 2019-12-16
80530895 2020-07-05
86211943 2020-03-01
80500495 2020-01-29
86211943 2020-01-24
lovecodeblog 2020-01-24
87261046 2019-12-23
MYRENZHIBO 2019-08-28
85234656 2018-09-03
fudirong 2012-04-12
80500495 2019-07-01