node操作mongodb
- node要操作mongodb我们要使用一个链接的第三方工具 —mongoose
- mongoose是node.js异步环境下对mongodb进行便捷操作的对象模型工具
mongoose基本操作
固定写法:
//1.如果要使用mongoose,那么我们就要先下载
npm install --save mongoose
//2.开始使用mongoose链接数据库
//2-1.引用mongoose
var mongoose = require("mongoose");
//2-2.开始正式的链接 (这里会有警告:缺少解析器来解析本次连接。1.可以不管它 2.将提示的解析器放入connect里面) //(唯一可变的值)
mongoose.connect("mongodb://localhost:27017/你要链接的库",复制的解析器);
//3.设置数据库的链接对象
var db = mongoose.connection;
//4.监听这个连接对象是否成功
db.on("error",console.error.bind(console,"数据库连接错误"))
db.once("open",()=>{
console.log("数据库连接成功了");
})
//一、进行新增操作
//5.当前连接成功后就要对数据库进行操作了,如果相对数据库操作的话,那么就使用schema对象
//shcema对象就是mongoose操作数据库的顶级对象
//创建schema对象的时候还需要指定在当前集合中要操纵的数据和数据类型还有就是默认值,不能为空等操作
var catSchema = new mongoose.Schema({
//定义数据类型
name:数据类型,
age:{type:数据类型,default:设置你要设置的默认值},
sex:{type:数据类型,require:true,default:设置你要设置的默认值}
})
//6.设置集合并且把schema对象传递进去
var colUser = mongoose.model("集合名",刚才创建的shcema对象)
//7.进行增删查改
//7-1.新增 (实例化设置集合对象)
var demoUser = colUser({
name:"数据",
age:"18",
.....
})
//开始存
demoUser.save().then((ok)=>{}).catch((err)=>{})
扩展:因为mongoose里面的存储的数据都是多个的,所以我们创建集合的时候默认会添加一个s 若我们创建集合的时候自己添加s,就不会再添加s
精简版:
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/你要链接的库",复制的解析器);
var db = mongoose.connection;
db.on("error",console.error.bind(console,"数据库连接错误"))
db.once("open",()=>{
console.log("数据库连接成功了");
})
var catSchema = new mongoose.Schema({
name:数据类型,
age:{type:数据类型,default:设置你要设置的默认值},
sex:{type:数据类型,require:true,default:设置你要设置的默认值}
})
var colUser = mongoose.model("集合名",刚才创建的shcema对象)
var demoUser = colUser({
name:"数据",
age:"18",
.....
})
demoUser.save().then((ok)=>{}).catch((err)=>{})
增删查改:
//二、进行读取操作
//连接数据库
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/cat")
var db = mongoose.connection;
db.on("error",console.error.bind(console,"数据库连接错误"));
db.on("open",()=>{
console.log("连接成功")
})
//这一步结束必须先进行测试
//创建schema对象
var catSchema = new mongoose.Schema({
name:String,
age:{type:Number,default:18},
})
//设置集合
var colCat = mongoose.model("cols",catSchema);
//开始新增操作
var demoCat = new colCat({
name:"胖橘",
age:8
})
demoCat.save().then((ok)=>{
console.log("新增成功")
}).catch((err)=>{
console.log("新增失败")
})
//查询
colCat.find().then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})
//条件查询 lt gt lte gte ne 小于 大于 小等于 大等于 不等于
colCat.find({
"age":{$lt:6}
}).then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})
//limit 显示多少条 skip 跳过多少条
colCat.limit(3).skip(2).then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})
//进行修改操作
//mongodb指令修改:
db.集合名.update({
{找到你要修改的内容},
{$set:{你修改后的内容}},
{multi:false}//默认false只修改找到的第一条数据 //true修改全部
})
//mongoose
colCat/*设置的集合名*/.update({
{找到你要修改的内容},
{$set:{你修改后的内容}},
{multi:false}//默认false只修改找到的第一条数据 //true修改全部
}).then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})
//进行删除操作
//mongodb指令删除: (不可逆的删除)
db.集合名字.remove(你要删除的内容)
//mongoose
colCat/*设置的集合名*/.remove(你要删除的内容).then((ok)=>{
console.log(ok)
}).catch((err)=>{
console.log(err)
})