简单介绍
- node要操纵mongodb 我们要使用一个链接的第三方工具------Mongoose
- mongoose是nodejs中提供链接mongodb的一个库
使用
1.如果使用mongoose,就必须下载mongoose
npm install --save mongoose(如果使用淘宝镜像,则用cnpm下载)
E:\1911\线上\1912三阶段\NO3\7.note>cnpm install --save mongoose
√ Installed 1 packages
√ Linked 28 latest versions
√ Run 0 scripts
Recently updated (since 2020-04-08): 1 packages (detail see file E:\1911\线上\1912三阶段\NO3\7.note\node_modules\.recently_updates.txt)
√ All packages installed (31 packages installed from npm registry, used 2s(network 2s), speed 72.33kB/s, json 29(150.23kB), tarball 0B)
E:\1911\线上\1912三阶段\NO3\7.note>
2.引用mongoose
// 1.使用mongoose连接数据库
// 1.1 引入mongoose
const mongoose=require('mongoose');
3.连接 数据库
mongoose.connect('mongodb://localhost:27017/自己的库')
// 1.2 开始连接
//connect()返回一个状态待定的连接
mongoose.connect('mongodb://localhost:27017/nj1912',{ useNewUrlParser: true , useUnifiedTopology: true});
4.设置数据库的连接对象
// 1.3 设置数据库的连接对象
const db=mongoose.connection;
5.监听数据库连接成功还是失败
// 1.4 监听数据库连接成功还是失败
db.on('error',console.error.bind(console,'数据库连接错误啦'));
db.on('open',()=>{
console.log('数据库连接成功');
})
6.测试一下
以上步骤是默认步骤,可直接复制使用(只需修改数据库)
7.连接数据库成功之后需要对数据进行操作,这时需要使用schema对象,是mongoose操作数据库的顶级对象
创建schema对象的时候还需要指定在当前集合中要操作数据、数据类型还有就是默认值,不能为空
const userSchema=new mongoose.Schema({键名:数据类型,键名:{type:数据类型,default:默认值},键名:{type:数据类型,default:默认值,require:ture 不能为空}})
// 2.创建schema对象和指定集合中的操作数据、数据类型和默认值,不能为空
const userSchema=new mongoose.Schema({
name:String,
age:{type:Number,default:20},
sex:{type:String,require:true,default:'男'}
})
8. 设置集合并把schema对象放进去
const demoUser=mongoose.model('集合名',刚才创建的schema对象)
// 3.设置集合并把schema对象放进去
const demoUser=mongoose.model('users',userSchema);
9. 新增数据
9.1 实例化设置集合并设置数据
// 4.1 实例化设置集合并设置数据
const demo=new demoUser({
name:"admin",
age:20,
sex:"gender"
})
9.2进行存放
db.集合名.save()
// 4.2 进行存放
demo.save()
.then((ok)=>{
console.log(ok);
})
.catch((err)=>{
console.log(err);
})
9.3.检测
10.查询
10.1查询全部
db.集合名.find()
// 5.1查询全部
demoUser.find()
.then((ok)=>{
console.log(ok);
})
.catch((err)=>{
console.log(err);
})
10.2 条件查询
db.集合名.find(条件)
// 5.2 条件查询
demoUser.find({"age":'25'})
.then((ok)=>{
console.log(ok);
})
.catch((err)=>{
console.log(err);
})
10.3 limit() 显示多少条 skip() 跳过多少条
db.集合名.find().limit().skip()
// 5.3 limit 显示多少条 skip 跳过多少条
// 显示第二条第三条
demoUser.find().limit(2).skip(1)
.then((ok)=>{
console.log(ok);
})
.catch((err)=>{
console.log(err);
})
11.修改
db.集合名.update({需要修改的内容},{$set:{修改后的内容}},{multi:false})
multi:默认是false 修改知道到的第一条数据 true 修改找到的全部数据
// 6.修改
demoUser.update(
{"name":"admin1"},
{$set:{"name":"haha"}},
{multi:true}
).then((ok)=>{
console.log(ok);
}).catch((err)=>{
console.log(err);
})
12.删除
12.1 条件删除
db.集合名.remove(条件)
// 7.1 条件删除
demoUser.remove({"age":'25'})
.then((ok)=>{
console.log(ok);
})
.catch((err)=>{
console.log(err);
})
12.2 删除全部
db.集合名.remove()
//7.2 删除全部
demoUser.remove()
.then((ok)=>{
console.log(ok);
})
.catch((err)=>{
console.log(err);
})