分享我的工作、生活与心情,让自己变得丰富多彩!
RAYBET雷竞技在线进入 | 2022-01-10 14:35
Cnpm i egg-momgo-native --save
plugin.js中配置
exports.mongo = { enable: true, package: 'egg-mongo-native', };
config.default.js配置
config.mongo = { client: { host:"127.0.0.1", port:"27017", name:"test", user:"", password:"", options:{}, } }
查询语句使用
var result = await this.app.mongo.find('users')
https://www.npmjs.com/package/egg-mongoose
配置
npm i egg-mongoose --=Mongodb:exports.mongoose =
Schema的建立数据表集合的映射新建app/module文件夹新增 order.js
module.exports = app => {const mongoose = app.mongoose;const Schema = mongoose.Schema;const OrderSchema = new Schema({ order_id: { type: String }, uid: { type: String }, trade_no: { type: String }, all_price: { type: Number }, all_num: { type: Number }, });return mongoose.model('Order', OrderSchema,'order'); //返回model }
Model的建立
增加数据
Let addResult=this.ctx.request.body; Let admin=new this.ctx.model.Order(addResult); admin.save();
修改数据
await this.ctx.model.Admin.updateOne({"_id":id},{ mobile,email,role_id})
查询
Let id=this.ctx.request.query.id; Let result=await this.ctx.model.Admin.find({"_id":id});
删除数据
await this.ctx.model[model].deleteOne({"_id":id});
数据预设
Mongoose 预定义模式修饰符,可以对我们增加的数据进行一些格式 Lowercase uppercase trim Set()//建议使用mongoose,增加数据时匹配Sn:{ Type:stringTrim:true //是否去掉空格index:1 //索引set(parmas){if(parmas.indexOf('http://')==0){return 'http://'+parmas }return parmas }
数据校验
Required Max Min Enum 枚举类型 Match 增加的数据必须符合match正则 Maxlength 最大值 Minlength 最小值 Name:{ Type:stringRequired:true, Min:0, Max:150, Enum:[0,1,2,3], 枚举类型 Match:/sn(.*)/i //必须sn开头} 自定义方法 validate:function(desc){return desc.length>=10; }
Mongoose中多对多的数据查询,和aggregate聚合管道
管道操作
$project
增加,删除,重命名字段
$match
条件匹配,只满足条件的文档才能进入下一阶段
$limit
限制结果的数量
$skip
跳过文档的数量
$sort
条件排序
$group
条件组合结果 统计
$lookup
用以引入其它集合的数据
sql和nosql对比
Where
$match
group
$group
having
$match
select
$project
Order by
Limit
$sort
$limit
Sum()
$sum
Count()
$sum
join
$lookup
常用表达式操作符
Description
$addToSet
将文档指定字段的值去重
$max
文档指定字段的最大值
$min
文档指定字段的最小值
$sum
文档指定字段求和
$avg
文档指定字段求平均
$gt
大于给定值
$lt
小于给定值
$eq
等于给定值
var result=await this.ctx.model.Admin.aggregate([{ $lookup:{from:'role', localField:'role_id', foreignField:'_id',as:'role'} }, { $match:{'role_id':10} } ])
聚合管道的使用
db.order.aggregate([ { $project:{ trade_no:1, all_price:1 } }, { $match:{"all_price":{$gte:90}} }, { $sort:{"all_price":-1} }, { $skip:1} ])
小雷竞技官网登入-RAYBET雷竞技在线进入 渝ICP备14008124号-2