0%

mongodb的常用方法(egg)

安装

1
npm install egg-mongoose --save

配置

1
2
3
4
exports.mongoose = {
enable: true,
package: 'egg-mongoose',
};

Egg连接mongoose

1
2
3
config.mongoose = {
url: 'mongodb://127.0.0.1/website',
};

定义数据表

1
2
3
4
5
6
7
8
9
10
11
12
13
// 用户表
module.exports = app => {
const Schema = app.mongoose.Schema({
merchant: String, // 商户号
userId: String, // 支付宝唯一ID 或 微信唯一ID
userType: String, // alipay wechat
info: Object, // 支付宝或微信返回的基础信息
accessToken: String, // 访问token
refreshToken: String, // 刷新token
});
Schema.index({ merchant: 1, userId: 1 });
return app.mongoose.model('User', Schema, 'User');
};

解释:其中type表示字段类型,Mongoose 有以下几种类型Number(数字),String(字符串),Boolean(布尔值),ObjectId(对象ID),Array(数组),Object(对象),Date(日期)

增加

1
this.ctx.model.Article.create(post,callback);

解释:其中post为json数据结构,callback为操作后的回调函数

删除

1
this.ctx.model.Article.remove(conditions);

更新

1
this.ctx.model.Article.update(conditions, update)

参数1:查询条件, 参数2:更新对象,可以使用MondoDB的更新修改器

查询

1
2
this.ctx.model.Ariticle.find(conditions,{option})
this.ctx.model.Ariticle.findOne(conditions,{option})

解析:
conditions: 查询的条件
option: 需要查询的字段:1表示要查询,-1表示不查询

分页和联表

1
2
3
4
5
6
7
8
let orderResult = ctx.model.Order.find(data)
.populate({ path: 'userId' })
.populate({ path: 'commodityId', seclect: 'merchant categoryId no info', populate: { path: 'categoryId' } });
const total = await ctx.model.Order.count();
orderResult = orderResult
.skip((currentPage - 1) * pageSize)
.limit(pageSize).sort({createTime: 1});
const orderData = await orderResult.exec();

相关mongodb的的文档官网

-------------本文结束感谢你的阅读---------