您的位置:首页 > 数据库 > Mongodb

Node连接MongoDB之mongosse

2017-12-14 11:19 78 查看
Mongoose是在node.js异步环境下对mongodb进行便捷操作的对象模型工具

使用首先你得装上node.js和mongodb

这里不单独来介绍下面主要来介绍 利用 Mongoose来进行mongodb数据库操作并介绍一些简单的 API 

1,首先安装Mongoose
4000


 
npm install Mongoose 成功安装后 通过 require('mongoose ') 来使用

2,创建mongoDB连接

  创建连接的意义就是和你远程mongodb服务器进行连接或者是本地测试服务器连接,进而进行操作。

  创建一个db.js 进行连接

  

//引入mongoose
var mongoose
= require('mongoose');
//设置连接地址,以及连接的数据库 固定格式 如果是本地测试fu
var
DB_URL = 'mongodb://ip:端口号/数据库名字';
/**
* 创建连接 mongoose通过connect 这个方法去连接数据
*/
mongoose.connect(DB_URL);
/**
* 连接成功 通过监听一下三个状态判断是否连接成功 connected 成功
*/
mongoose.connection.on('connected',function() {
console.log('Mongoose connection open to '+DB_URL);
});
/**
* 连接异常 error 数据库连接错误
*/
mongoose.connection.on('error',function(err) {
console.log('Mongoose connection error: '+ err);
});
/**
* 连接断开 disconnected 连接异常断开
*/
mongoose.connection.on('disconnected',function() {
console.log('Mongoose connection disconnected');
});

/**
* 通过module.exports曝露出去 我们就可以在外部引入db.js进行
*/

module.exports = mongoose

connnction中有很多事件,不止这几个事件有兴趣可以去研究一下 此时我们就可以单独去执行db.js 去看下是否正确连接到了数据库,node db.js 就可以执行 出现打印我们的数据库连接 就证明已经连接上了 我们可以往下进行操作了

当然这种方法是最简单的通过地址字符串的形式进行连接,还有一些比较复杂的形式,比如密码连接 数据库设置连接等,有用的可以查一下api文档http://mongoosejs.com/docs/api.html#index-js

3,通过schema创建关系表

    scheme简单来说就是定义表的结构都有什么字段是什么类型,可以理解为表结构的定义,每一个scheme都可以映射到对应mongodb中的一个连接,白话一点就是一张表,不具备操作表的能力

    首先创建schema.js 引入创建连接的db,js  通过new构造函数的形式进行new 一个新的schma 那schema首先是创建好后才会有的 然后去定义字段名类型,这里不仅可以定义字段 还可以定义一下静态方法 这里不详细说有兴趣的可以查阅一下文档

var mongoose
= require('../db/db')
var Schema
= mongoose.Schema;
var produtSchema
= new
Schema({
'productId': { type:String },
'productName': { type:String },
'salePrice': { type:Number },
'productImage': { type:String },
'productUrl': { type:String },
'productNum': { type:Number },
'checked': { type:Number }
})
module.exports = produtSchema;

4,创建model 进行数据库操作

     model是schema生成出来的模型,模型是有方法,可以对数据库进行操作

     创建model.js 针对于不同项目需求,文件是可以写在一起的如果项目很大建议还是讲每一步分开,这样比较好理解,项目结构也是鲜明的。

     引入db.js 引入schema 之后将 mongoose.model 曝露出去,这里详细说下model 的参数 第一个参数是连接的数据库,这里首字母要大写,再创建数据库时 要用小写复数形式 如goods users 等  再连接时 第一个参数 写大写单数Good User 这样会去自动查找goods users 库 ,如果不放心可以写第三个参数,数据库的真实名字 mongoose.model('Good',productSchema,'goods') 

那第二个参数就是要传入表结构了 这样模型就建好了 ,此时模型上就是有方法可以进行数据库操作了

var mongoose
= require('../db/db')
var produtSchema
= require('../schemas/produtSchema');

module.exports = mongoose.model('Good', produtSchema);

5,页面上引入模型进行数据库查询等操作

var goods
= require('../models/goods');

此时goods就是代表了模型 可以通过goods进行数据库操作

Model.save([callback])
保存插入数据 在新增,或者保存修改的数据都调用save 方法

Model.find(onditions, [fields], [options], [callback]) 
//条件查询 第二个参数可以写查询条件 如果传入空对象就是表示查询全部

Model.findOne([options], [callback]) //查询一条数据

Model.findByID([options],
[callback]) //查询根据ID

Model.update(conditions, update, [options], [callback]) //更新数据

Model.findByIdAndUpdate(id,
[update], [options], [callback] //根据ID查找并且进行修改

Model.findOneAndUpdate([conditions],
[update], [options], [callback]) //找到一条记录并更新

Model.remove(conditions, [callback]) //删除指定文档

Model.findByIdAndRemove(id, [options], [callback]) //ID查找并删除

Model.findOneAndRemove(conditions, [options], [callback]) //找到一条记录并删除

Model.distinct(field, [conditions], [callback])    //去重

Model.findOne(conditions, [fields], [options], [callback]) //查找一条记录

Model.findOneAndRemove(conditions, [options], [callback]) //查找一条记录并删除

Model.findOneAndUpdate([conditions], [update], [options], [callback])  //查找一条记录并更新

在写查询条件时 这样去写 

let params = {

            salePrice: {

                $gt: 100,

                $lte: 500,

            }

goods.find(params) 查询价格大于100小于等于500的所有数据

查询条件 有一些:

    $or    或关系

  $nor    或关系取反

  $gt    大于

  $gte    大于等于

  $lt     小于

  $lte     小于等于

  $ne            不等于

  $in             在多个值范围内

  $nin           不在多个值范围内

  $all            匹配数组中多个值

  $regex  正则,用于模糊查询

  $size   匹配数组大小

  $maxDistance  范围查询,距离(基于LBS)

  $mod     取模运算

  $near   邻域查询,查询附近的位置(基于LBS)

  $exists    字段是否存在

  $elemMatch  匹配内数组内的元素

  $within  范围查询(基于LBS)

  $box    范围查询,矩形范围(基于LBS)

  $center       范围醒询,圆形范围(基于LBS)

  $centerSphere  范围查询,球形范围(基于LBS)

  $slice    查询字段集合中的元素(比如从第几个之后,第N到第M个元素)

      共享一个写分页的方法
     goods.find({}).skip(n).limit(m)    skip是默认跳过多少条,limit是截取多少条。

那到这里mongoose的基本应用就介绍完了,希望对大家有所帮助
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb node.js