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的基本应用就介绍完了,希望对大家有所帮助
使用首先你得装上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的基本应用就介绍完了,希望对大家有所帮助
相关文章推荐
- node 连接mongodb ---小白入门
- Node连接Mongodb以及CRUD操作
- node 连接MongoDB
- node.js通过权限验证连接MongoDB
- node.js连接MongoDB数据成功之后,抛出错误,db.collection is not a function
- Node.js连接mongodb实例代码
- node.js学习第3天,mongos 连接MongoDB
- MongoDB学习(2)—Node.js与MongoDB的基本连接示例
- windows下安装mongodb以及node.js连接mongodb实例
- Node.js 连接Mongodb错误:db.listCollections is not a function
- node连接Mongodb
- Node.js与MongoDB的基本连接示例
- node里面连接mongodb查询返回一天的数据(根据时间段查询)
- Node.js连接MongoDB。
- 使用nodejs mongodb连接mongodb的shard分布服务
- node.js对mongodb的连接&增删改查(附async同步流程控制)
- node.js 学习笔记五:连接mongodb
- Node.js 连接 MongoDB
- KoaHub平台基于Node.js开发的Koa的连接MongoDB插件代码详情
- [Node.js]连接mongodb