Me

DO NOT LOOK THIS ONE .

View on GitHub

BACK


mongoose

install

npm install mongoose

how to use

创建 Schema

const mongoose = require('codes/mongoose');
const Schema = mongoose.Schema;

let _Name=new Schema({
    author:{type:String,default:'',required:true,unique:true},
    expiredAt:Date,
    gender:Number,
    used:{type:Array,default:[]}
},{timestamps:true}); 
/* 
  添加 {timestamps,true} 后
  mongo自行添加 createdAt,updatedAt
  并自行更新updatedAt
*/
module.exports = _Name;

创建 数据库


const mongoose = require('codes/mongoose');

let options = {
    user: 'username',
    pass: 'password',
    useNewUrlParser: true,
    useCreateIndex: true,
};

mongoose.connect('mongodb://127.0.0.1:27017/dbname',options);
mongoose.set('useFindAndModify', false); //去除摒弃对的方法

const DB = {};

//创建Model
DB.Name= mongoose.model('Name',require('./_Name'));

module.exports=DB;

分页

// limit+skip = 分页
DBNAME
    .find({})   // 查询数据
    .sort()     // 排序
    .limit()    // 返回数据个数
    .skip()     // 跳过数据个数
    .countDocument()    // 查找到的数据个数(mongoose)
    .count()    // 查找到的数据个数(mongodb)

模糊查询

    // 构建正则 => keyword是查询的词
    let rex = new RegExp(keyword,'i');
    // 数据库搜索
    DBNAME.find({
        $or:[
            {'title': {$regex: rex}}, // 搜索 title 字段
            {'nickname': {$regex: rex}}, // 搜索 nickname 字段
        ]
    })

位置查询

// 数据库定义时
schema = {
    'gps':{type:[Number],index: '2d'}, // 地址经纬度 [longitude/经度,latitude/纬度]
}
// 数据库查询 距离远近排序
DBNAME.find({
    'gps':{$near:gps}
})

去重查询

let oidArr = await DBNAME.distinct('oid');

聚合查询

let data = await AlarmReport.aggregate([
    {$match: {'ip':{'$nin':['',null]}}}, // 条件查询
    {$group: {'_id': '$ip', count: {$sum: 1}}}, // 分组(以ip为键,统计个数)
    {$project: {'_id': 0, 'ip': '$_id', 'count': 1}}, // 返回值(显示ip,count)
    {$sort: {'count': -1}}, // 排序(按照count进行反向排序)
    {$limit:3}, // 截取个数
]);

BACK