$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()
- test() 方法檢索字符串中的指定值。返回值是 true 或 false;
- exec() 方法檢索字符串中的指定值。返回值是被找到的值。如果沒有發現匹配,則返回 null
var patt1=new RegExp("e");
document.write(patt1.exec("The best things in life are free"));
- 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"));