当前位置:Gxlcms > 数据库问题 > Nodejs学习笔记(二)--- 操作MongoDB数据库

Nodejs学习笔记(二)--- 操作MongoDB数据库

时间:2021-07-01 10:21:17 帮助过:23人阅读

mongoose = require(‘mongoose‘), DB_URL = ‘mongodb://127.0.0.1:27017/Test‘; // 连接 mongoose.connect(DB_URL); // 测试连接是否成功 mongoose.connection.on(‘connected‘, function () { console.log(‘my mongodb connection success !!!‘) }) // 连接异常的情况 mongoose.connection.on(‘error‘, function (er) { console.log(‘connection error: ‘ + er); }) // 连接断开 mongoose.connection.on(‘disconnected‘, function () { console.log(‘mongogdb disconnection‘) }) module.exports = mongoose;

 

二: 创建数据模型
创建Schema ( 有点类似创建实例属性) 并建立Model

// 获取连接
var mongoose = require(‘./db.js‘),
  Schema = mongoose.Schema;

// 创建用户
var userInfo = new Schema({
  uid: {type: String},
  uname: {type: String},
  upwd: {type: String},
  loginDate: {type: Date}
})

// 将定义好的schema 转换为model 
module.exports = mongoose.model(‘userInfo‘, userInfo);

三 对数据库操作 

 3.1 插入操作:

技术分享图片
var User = require(‘./userInfo.js‘)

/*
 插入操作
 */

function insert() {
  var userInfo = new User({
    uid: ‘1‘,
    uname: ‘yaobo1‘,
    upwd: ‘123‘,
    loginDate: new Date()
  })

  userInfo.save(function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + res)
    }
  })
}
insert();
View Code

 

   3.2 查询操作:

  这里在做模糊查询的时候是使用正则表达式来判断的

  引用:

$regex操作符的使用 $regex操作符中的option选项可以改变正则匹配的默认行为,它包括i, m, x以及S四个选项,其含义如下
  • i 忽略大小写,{<field>{$regex/pattern/i}},设置i选项后,模式中的字母会进行大小写不敏感匹配。
  • m 多行匹配模式,{<field>{$regex/pattern/,$options:‘m‘},m选项会更改^和$元字符的默认行为,分别使用与行的开头和结尾匹配,而不是与输入字符串的开头和结尾匹配。
  • x 忽略非转义的空白字符,{<field>:{$regex:/pattern/,$options:‘m‘},设置x选项后,正则表达式中的非转义的空白字符将被忽略,同时井号(#)被解释为注释的开头注,只能显式位于option选项中。
  • s 单行匹配模式{<field>:{$regex:/pattern/,$options:‘s‘},设置s选项后,会改变模式中的点号(.)元字符的默认行为,它会匹配所有字符,包括换行符(\n),只能显式位于option选项中。
使用$regex操作符时,需要注意下面几个问题:
  • i,m,x,s可以组合使用,例如:{name:{$regex:/j*k/,$options:"si"}}
  • 在设置索弓}的字段上进行正则匹配可以提高查询速度,而且当正则表达式使用的是前缀表达式时,查询速度会进一步提高,例如:{name:{$regex: /^joe/}
技术分享图片
var User = require(‘./userInfo.js‘)

/*
   查询操作
 */

function find() {
  let wherestr = {uid: ‘1‘}

  User.find(wherestr, function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + res)
    }
  })
}

/*
  模糊查询
 */

function getRegex(){
  var wherestr = {uname: {$regex: /yaobo/m}}
  console.log(wherestr);
  User.find(wherestr, function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + res)
    }
  })
}

/*
  聚合查询
 */

function aggregate(){
  var wherestr = [{$group: {_id: ‘$uname‘, num: {$sum: 1}}}]
  console.log(wherestr);
  User.aggregate(wherestr, function (err, res) {
    if(err) {
      console.log(‘err‘ + err);
    } else {
      console.log(‘res:‘ + JSON.stringify(res))
    }
  })
}

//find();

// http://blog.csdn.net/u022812849/article/details/51314810

// getRegex();

aggregate();
View Code

 3.3 删除操作

技术分享图片
var User = require(‘./userInfo.js‘)

function remove() {
  let wherestr = {uid: ‘1‘}

  User.remove(wherestr, function (er, res) {
    if (er) {
      console.log(‘er:‘, er)
    }
    if (res) {
      console.log(‘res‘, res)
    }
  })
}

remove();
View Code

3.4 更新操作

技术分享图片
var User = require(‘./userInfo.js‘)

function update() {
  var wherestr = {uname: ‘yaobo1‘}
  var updatestr = {uname: ‘神奇的造物主‘}

  User.update(wherestr, updatestr, function (er , res) {
     if (er) {
       console.log(‘er:‘, er)
     }
     if (res) {
       console.log(‘res‘, res)
     }
  })
}

update();
View Code

 

  其实这样写下来就会发现,掌握了结构之后,就是知道如何去使用nodejs去操作mongodb, 可能有些复杂的没写(后续有好的东西,再往上加),不过基本语句掌握了,掌握mongdb的语言就尤为重要了

 

 

Nodejs学习笔记(二)--- 操作MongoDB数据库

标签:name   ror   ocs   exports   通过   字符   insert   nbsp   nodejs   

人气教程排行