是跟随尚硅谷的李立超老师学习的MongoDB
李立超老师MongoDB学习视频
下面把写过的代码文件放到上面,学习的小伙伴可以参考
01.helloMongoose.js
/**
* 1.下载安装Mongoose
* npm i mongoose --save
* 2.在项目中引入mongoose
* var mongoose = require("mongoose");
* 3.连接MongoDB数据库
* mongoose.connect('mongodb://数据库的ip端口号/数据库名',{useMongoClient:true});
* 如果端口号为默认端口号(27017)则可以省略不写
* 4.断开数据库连接(一般不需要调用)
* -MongoDB数据库,一般情况下,只需要连接一次,除非服务器停止,否则连接一般不会自动断开
* mongoose.disconnect()
*
* -监听MongoDB数据库的连接状态
* -在mongoose对象中,有一个属性叫做connection,该对象表示数据库连接
* 通过监视该对象的状态,可以来监听数据库的连接与断开
*
* 数据库连接成功的事件
* mongoose.connection.once("open",function(){});
*
* 数据库断开事件
* mongoose.connection.once("close",function);
*
* Schema
* Model
* Document
*/
/*
* 引入
* */
var mongoose = require("mongoose");
//连接数据库
mongoose.connect("mongodb://127.0.0.1/mongoose_test",);
mongoose.connection.once("open",function(){
console.log("数据库连接成功!!!");
});
mongoose.connection.once("close",function(){
console.log("数据库连接断开!!!");
});
//断开数据库连接
mongoose.disconnect();
02.mongoose_demo.js
var mongoose =require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test");
mongoose.connection.once("open",function(){
console.log("数据库连接成功!!!")
});
//将mongoose.Schema赋值给一个变量
var Schema = mongoose.Schema;
//创建Schema(模式)对象
var stuSchema = new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
});
//通过Schema来创建Model
//Model代表的是数据库中的集合,通过Model才能对数据库进行操作
//mongoose.model(modelNmae,schema):
//modelName就是要映射的集合名字,mongoose会自动将集合名字变成复数
var StuModel = mongoose.model("student",stuSchema);
//向数据库中插入一个文档
//StuModel。create(doc,function(err){});
StuModel.create({
name:"白骨精",
age:16,
address:"白骨洞"
},function(err){
if(!err){
console.log("插入成功~~~");
}
});
03.model.js
var mongoose =require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test");
mongoose.connection.once("open",function(){
console.log("数据库连接成功!!!")
});
//将mongoose.Schema赋值给一个变量
var Schema = mongoose.Schema;
//创建Schema(模式)对象
var stuSchema = new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
});
//通过Schema来创建Model
//Model代表的是数据库中的集合,通过Model才能对数据库进行操作
//mongoose.model(modelNmae,schema):
//modelName就是要映射的集合名字,mongoose会自动将集合名字变成复数
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 查询的条件
* projecton 投影
* options 查询选项(skip limit)
* callback 回调函数,查询结果会通过回调函数返回
* 回调函数必须传,如果不传回调函数,压根不会查询
*
* */
// StuModel.find({name:"唐僧"},function(err,docs){
// if(!err){
// console.log(docs);
// }
// });
//查询所有
// StuModel.find({},function(err,docs){
// if(!err){
// console.log(docs);
// }
// });
//设置条件 "name age" 只显示这个 skip:3 跳过三个 limit:1 只显示1个
// StuModel.find({},"name age",{skip:3,limit:1},function(err,docs){
// if(!err){
// console.log(docs);
// }
// });
//findOne 总会返回一个具体的文档对象
// StuModel.findOne({},function(err,docs){
// if(!err){
// console.log(docs);
// }
// });
//findById
// StuModel.findById("626b585a73d464760fa92391",function(err,doc){
// if(!err){
// //console.log(docs);
// //通过find()查询的结果,返回的对象,就是Document,文档对象
// //Document对象是Model的实例
// console.log(doc instanceof StuModel);
// }
// });
// StuModel.create([
// {
// name:"沙和尚",
// age:38,
// gender:"male",
// address:"就沙河"
// }
// ],function(err){
// if(!err){
// console.log(arguments);
// }
// });
/*
* 修改
* Model.update(conditions,doc,[options],[callback])
* Model.updateMany(conditions,doc,[options],[callback])
* Model.updateOne(conditons,doc,[options],[callback])
* -用来修改一个或多个文档
* -参数:
* conditions 查询对象
* doc 修改后的对象
* options 配置参数
* callback 回调函数
* Model.replaceOne(conditions,doc,[options],[callback])
* */
// //修改唐僧年龄为20
// StuModel.updateOne({name:"唐僧"},{$set:{age:20}},function (err){
// if(!err){
// console.log("修改成功");
// }
// })
/*
* 删除
* 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);
// }
// });
//
04.document.js
var mongoose =require("mongoose");
mongoose.connect("mongodb://127.0.0.1/mongoose_test");
mongoose.connection.once("open",function(){
console.log("数据库连接成功!!!")
});
//将mongoose.Schema赋值给一个变量
var Schema = mongoose.Schema;
//创建Schema(模式)对象
var stuSchema = new Schema({
name:String,
age:Number,
gender:{
type:String,
default:"female"
},
address:String
});
//通过Schema来创建Model
//Model代表的是数据库中的集合,通过Model才能对数据库进行操作
//mongoose.model(modelNmae,schema):
//modelName就是要映射的集合名字,mongoose会自动将集合名字变成复数
var StuModel = mongoose.model("student",stuSchema);
/*
* Document和集合中的文档一一对应,Document是Model的实例
* 通过Model查询到结果都是Document
* */
//创建一个Document
var stu = new StuModel({
name:"奔波霸",
age:48,
gender:"male",
address:"碧波潭"
});
/*
* document的方法
* Model#save([options],[fn])
* */
// stu.save = function (err) {
// if(!err){
// 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(name,value)
* -设置文档的指定属性值
* id
* -获取文档的_id属性值
* toJSON()
* -转换为一个JSON对象
* toObject()
* -将Document对象转换为一个普通的JS对象
* 转换为普通的js对象以后,注意所有的Document对象的方法或者属性都不能使用了
* */
// console.log(doc.get("name"));
// console.log(doc.get("name"));
//doc.set("name","朱筱筱");
//doc.name = "hhh";
// console.log(doc.id);
// console.log(doc._id);
// var j= doc.toJSON();
// console.log(j);
//var o = doc.toObject();
//console.log(o);
// console.log(doc);
// var o = doc.toObject();
// delete doc.address;
// console.log(doc);
doc = doc.toObject();
delete doc.address;
console.log(doc._id);
}
});
05.index.js
require("./tools/conn_mongo");
var student = require("./models/student").model;
//console.log(student);
student.find({},function(err,docs){
if(!err){
console.log(docs);
}
});
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);
exports.model = stuModel;