关于前端:mongose-模糊检索

6次阅读

共计 1128 个字符,预计需要花费 3 分钟才能阅读完成。

$regex 为含糊查问的字符串提供正则表达式性能,MongoDB 应用 Perl 兼容正则表达式

// 通过条件查找, 反对 username 含糊搜寻并分页
    findAdminByParamsAndPageHasFuzzy(params, pager) {if (params.username) {let pattern = new RegExp(params.username);
            params.username = {
                $regex: pattern,
                $options: 'imxs'
            };
        }
        if (params.orgname) {let pattern = new RegExp(params.orgname);
            params.orgname = {
                $regex: pattern,
                $options: 'imxs'
            };
        }
        if (params.adminRoles) {params.adminRoles = mongoose.Types.ObjectId(params.adminRoles);
        }
        AdminHandler.searchParamsClearEmptyValue(params);
        return Promise.all([adminModel.find(params, { password: 0}).count().exec(),
            adminModel.find(params, { password: 0}).sort({_id: -1}).populate("adminRoles").skip((pager.pageIndex - 1) * pager.pageSize).limit(pager.pageSize).exec()])
    }

RegExp 对象用于存储检索模式。通过 new 关键词来定义 RegExp 对象
RegExp 对象有 3 个办法:test()、exec() 以及 compile()

  1. test() 办法检索字符串中的指定值。返回值是 true 或 false;
  2. exec() 办法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null
var patt1=new RegExp("e");

document.write(patt1.exec("The best things in life are free"));
  1. compile() 办法用于扭转 RegExp。compile() 既能够扭转检索模式,也能够增加或删除第二个参数;
var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free"));

patt1.compile("d");

document.write(patt1.test("The best things in life are free"));
正文完
 0