安装
$ yarn add egg-mongoose
配置
module.exports = appInfo => {
const config = exports = {};
config.mongoose = {
clients: {
glui: { url: 'mongodb://localhost:27017/glui', options: { useNewUrlParser: true, }, },
easymock: { url: 'mongodb://localhost:27017/easy-mock', options: { useNewUrlParser: true, }, }
}
};
return config;
};
定义数据表
'use strict';
module.exports = app => {
const mongoose = app.mongoose;
const Schema = mongoose.Schema;
const conn = app.mongooseDB.get('glui');
const schema = new Schema({
nick_name: String,
head_img: String,
name: String,
password: String,
wechat: String,
open_id: String,
machine_ip: String,
machine_name: String,
worker_no: String,
flag: {
type: Boolean,
default: true
},
create_at: {
type: Date,
default: Date.now
}
})
schema.index(
{ name: 1 },
{ unique: true }
);
return conn.model('User', schema);
}
mongoose方法
class GluiController extends Controller {
async test() {
const ctx = this.ctx;
ctx.model.User.create(post, callback);
ctx.model.User.find()
ctx.model.User.findOne()
ctx.model.User.find(conditions, callback);
ctx.model.User.find({ _id: '5ba05c89b1f3b6355e1d635e', name: 'Alioth' }, callback);
ctx.model.User.find({ create_at: { $gte: new Date(2019, 7, 5), $lte: new Date(2019, 7, 6) } })
ctx.model.User.find({ name: { $in: ['Alioth', 'Jodie'] } });
ctx.model.User.find({ $or: [{ _id: '5ba05c89b1f3b6355e1d635e' }, { name: 'Alioth' }] });
ctx.model.User.find({ name: { $exists: true } }, function (error, docs) {
});
ctx.model.User.find({ name: { $exists: false } }, function (error, docs) {
});
ctx.model.User.find({ name: /Alioth/i });
ctx.model.User.find({ array: 10 });
ctx.model.User.find({ 'array[5]': 10 });
ctx.model.User.find({ array: [5, 10] });
ctx.model.User.find({ array: { $size: 3 } });
ctx.model.User.find({ array: { $slice: 10 } });
ctx.model.User.find({ array: { $slice: [5, 10] } });
ctx.model.User.find({ $where: 'this.x + this.y === 10' });
ctx.model.User.find({ $where: 'function(){ return this.x + this.y ===10; }' })
ctx.model.User.remove(conditions, callback);
ctx.model.User.update(conditions, update, callback);
let data = { name: 'Jodie' }
ctx.model.User.update({ _id: '5ba05c89b1f3b6355e1d635e' }, data)
ctx.model.User.update({ "age": 22 }, { $inc: { "age": 1 } });
ctx.model.User.update({ _id: '5ba05c89b1f3b6355e1d635e' }, { $set: { isDelete: true } });
ctx.model.User.update({ create_at: new Date(2019, 7, 5) }, { $unset: { create_at: '' } });
ctx.model.User.update({ name: 'Jodie' }, { $push: { array: 10 } });
ctx.model.User.update({ name: 'Jodie' }, { $addToSet: { array: 10 } });
ctx.model.User.update({ name: 'Jodie' }, { $push: { array: { $each: [1, 2, 3, 4, 5] } } });
ctx.model.User.update({ name: 'Jodie' }, { $pop: { array: 1 } });
ctx.model.User.update({ name: 'Jodie' }, { $pull: { array: 10 } });
ctx.model.User.sort({ isSetTop: -1, sort: 1, editTime: -1 });
ctx.model.User.limit(3);
ctx.model.User.skip(3);
ctx.model.User.find({ _id: '5ba05c89b1f3b6355e1d635e' }).skip(pageSize * (pageNum - 1)).limit(parseInt(pageSize)).sort({ isSetTop: -1, sort: 1, editTime: -1 });
}
}
module.exports = GluiController;