mongodb和mongoose模块

数据库

数据库有关系型数据库(MySQL)和非关系型数据库(mongodb),两者的语法和数据存储形式不一样。

  • mySQL 关系型数据库

类似于表格的形式,每一条数据都是以id为标识

  • mongodb 非关系型数据库

集合,相当于表的概念,Bson,一条数据代表一个文档(数据的基本单位)

mongodb

大数据库-->子数据库-->集合(Bson)-->文档(数据的基本单位)-->字段(键值对)

在黑窗口下执行的一些命令行:

mongoose模块

// mongoose 导入包
const mongoose = require("mongoose");
//连接本地子数据库simple(没有的话会创建一个),返回一个实例,默认端口27017
const db = mongoose.createConnection("mongodb://localhost:27017/simple", {useNewUrlParser : true});
//用原生的es6的promise替换掉mongoose自定义的promise
mongoose.Promise = global.Promise;
//监听是否链接成功
db.on("error", () => {
console.log("数据库链接失败");
});
db.on("open", () => {
console.log("数据库链接成功");
});
// 规范数据的字段,得到Schema类
const Schema = mongoose.Schema;
//得到Schema实例,用来规范数据类型或者字段
const userSchema = new Schema({
name : String,
age : Number, //类型的构造函数
sex : String
},{
versionKey : false //取消往每个数据中插入版本信息
});
//创建一个集合,名为user,返回一个构造函数
const User = db.model("user", userSchema, "user"); //如果不写第三个参数则集合名字会在后面加s为users,加了第三个参数就会直接指定它的名称
//要插入集合的文档/数据
const obj1 = {
name : "simple",
age : 25,
sex : "男"
};
//插入数据
const d1 = new User(obj1);
d1.save((err, data) => {
console.log(data);
}); //返回一个promise对象
/* d1.save().then(res => {
console.log(res);
}).catch((err) => {
console.log(err);
});
*/
//删除数据
/* User.deleteOne({name:"simple"}, (err, data) => {
if(err) console.log(err);
console.log("删除成功", data);
}); */
/* User.deleteMany({ name: "May" }, function (err) {
if (err) console.log(err);
}); */
05-08 15:07