使用Node.js,对mongodb数据库进行操作

使用mongoose第三方模块

mongoose是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易。

安装与使用

安装

npm install mongoose --save

使用
//1.引入mongoose
let mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/student');

//2.监听各种状态
let db = mongoose.connection;
db.on('error',() => {
  console.log('连接失败!');
})
db.once('open',function(){
  //we're connection
  console.log('连接成功');
});

db.once('close',function(){
  //we're connection
  console.log('数据库断开成功');
});

终端打印“连接成功”,则说明连接数据库成功

有何优势?

mongoose提供了几种新的对象
1.schema模式对象:定义约束了数据库的文档结构
2.Model: 作为集合中所有文档的表示,相当于mongodb数据库中的collection
3.Document: 表示集合中的具体文档

如何使用新的对象对数据库进行操作

//2.创建schema对象,初始化创建的文档结构
let  Schema = mongoose.Schema;
let personSchema = new Schema({
  name:String,
  age: Number,
  sex: {
    type:String,
    default: '男'
  },
  chat: String
})

//3.创建Model对象,实例化一个模板
let personModle = mongoose.model("person",personSchema)
//4.插入文档
personModle.create({
  name:'周杰伦',
  age: 40,
  sex: '男',
  chat: "jay1997"
},(err) => {
  if (!err){
    console.log("insert success!")
  }else{
    console.log(err)
  }
});

personModle.create({
  name:'张学友',
  age: 40,
  sex: '男',
  chat: "xueyoulalala"
},(err) => {
  if (!err){
    console.log("insert success!")
  }else{
    console.log(err)
  }
})

打印信息

>连接成功
>insert success!
>insert success!

插入成功,在数据库中能够看到对应的数据

增查
//通过Model对象的creat函数,可以增加一个或多个文档对象
personModle.create([
  {name:'阿卡丽',age:'19',sex: '女',chat:'akari1997'},
  {name:'卡沙',age:'19',sex: '女',chat:'kasha1997'},
  {name:'德莱厄斯',age:'25',sex: '男',chat:'adadadwf'},
  {name:'潘森',age:'23',sex: '男',chat:'gadofwar'},
  {name:'压缩',age:'21',sex: '男',chat:'eeeeeeee'},
],(err) => {
  if (!err){
    console.log("insert success!")
  }else{
    console.log(err)
  }
})

//通过moduel对象的find()函数,查找所有数据
personModle.find({},(err,docs) => {
  if(!err){
    console.log(docs)
  }else{
    console.log(err)
  }
})

//按照对应信息查找数据
personModle.find({},{name:1,age:1,_id:0},(err,docs) => {
  if(!err){
    console.log(docs)
  }else{
    console.log(err)
  }
})
//结果则是以{name:'xxx',age:xx}打印出,不会显示_id

//按对应信息查找,并查找指定项 skip:0,从第一个开始查找,limit:7,查找7个数据
personModle.find({},"-_id name age chat",{skip:0,limit:7},(err,docs) => {
  if(!err){
    console.log(docs)
  }else{
    console.log(err)
  }
})
删改
//通过model的update()实现改数据
//$set为要修改项,multi:true则是全部修改
personModle.update({name:"阿卡丽"},{$set:{age:42}},{multi:true}, (err) => {
  if(!err){
    console.log('修改成功')
  }else{
    console.log(err)
  }
})

//删除数据
//model.deleteMany();model.deleteOne();model.remove()
personModle.remove({name:'压缩'},(err) => {
  if(!err){
    console.log('删除成功')
  }else{
    console.log(err)
  }
})
统计文档个数
//统计文档的个数 model.count()
personModle.count({},(err,count) => {
  if(!err){
    console.log(count)
  }else{
    console.log(err)
  }
})

还有许多使用的函数,去阅读文档吧~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值