我正在嘗試創建一個dynamic可以使用至少 3 個字母實作的過濾器。我有很多欄位,我將對其進行過濾。
例如,如果我試圖通過 查找用戶email,我希望能夠輸入“@gma”或至少是“gma”,理想情況下,它應該回傳包含指定過濾值的所有用戶的陣列。像性能搜索時,這應該是相同的firstName等
我當前的解決方案只有在我提供與我的資料庫中已有的值相匹配的完整值時才有效。例如[email protected]為email或john為firstName。我希望能夠jo為后者打字。
const regexPattern = new RegExp(["^", filterUsersByValue, "$"].join(""), "i");
const filteredU = UserModel.find({ [filterUsersBy]: regexPattern})
uj5u.com熱心網友回復:
如果我理解正確,由于您使用的是 JS,您可以find像這樣創建物件:
let findObj = {}
findObj[userKey] = {$regex:userFilter, $options:"i"}
const filteredU = UserModel.find(findObj)
這會像這樣創建 que 物件:
const userFilter = "gma"
const userKey = "email"
let findObj = {}
findObj[userKey] = {$regex:userFilter,$options:"i"}
console.log(findObj)
與此查詢中的相同的是什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/329208.html
標籤:javascript 数组 正则表达式 MongoDB 全文搜索
