Nodejs:mongodb 简单模糊+分页查询实例




function search(where, page_obj, next) {
    var sort = { 'timestamp.create': 1 };
    if (!where) {
        where = {};
    }
    // var str=".*"+searchValue+".*$"
    // var reg = new RegExp(str)
    var reg_address = new RegExp('');
    var reg_vm_name = new RegExp('');
    var reg_asset = new RegExp('');
    //多字段匹配
    var _filter = { $or: [] };
    if (where.address) {
        reg_address = new RegExp(where.address);
        _filter['$or'].push({
            'address': { $regex: reg_address }
        });
    };
    if (where.vm_name) {
        reg_name = new RegExp(where.name);
        _filter['$or'].push({
            'name': { $regex: reg_name }
        });
    };
    if (where.asset) {
        reg_asset = new RegExp(where.asset);
        _filter['$or'].push({
            'asset': { $regex: reg_asset }
        });
    };
    if (_filter['$or'].length == 0) {
        _filter = {};
    }
    mongo.selectWhereGetCount(db_blist, _filter, (err, count) => {
        if (err) throw err;
        mongo.selectWhereOrderSkipLimit(db_studentlist,
            _filter, {}, sort, page_obj.size, (page_obj.page - 1) * page_obj.size,
            (err, result) => {
                ret = {
                    'page': page_obj,
                    'total': count,
                    'rows': result
                }
                next(err, ret);
            });
    });
}

 

function selectWhereGetCount(collection, where, next) {
    var dbo = db.db(db_name);
        dbo.collection(collection).find(where).count(function(err, count) {
            next(err, count);
        });
}

 


function selectWhereOrderLimit(collection, where, fields, sort, limit, next) {
        var dbo = db.db(db_name);
        // sort = {'account_order':1};
        // limit = 10;分页用
        console.log(sort, limit);
        dbo.collection(collection).find(where, fields).sort(sort).limit(limit).toArray((err, result) => { // 返回集合中所有数据
            if (err) throw err;
            next(err, result);
        });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千码君2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值