在mongodb和mongoose中使用Regex对象数组进行过滤



我试图创建一个dynamic过滤器,可以使用至少3个字母实现。我有很多要过滤的字段

作为一个例子,如果我试图通过email找到用户,我希望能够键入"@gma"或者至少"gma"理想情况下,它应该返回包含指定过滤值的所有用户的数组。当搜索属性如firstName

时,这应该是相同的我目前的解决方案只适用于如果我提供一个完整的值,匹配我已经在我的数据库。例如test@gmail.com对应email,john对应firstName。我希望能够为后者输入jo

const regexPattern = new RegExp(["^", filterUsersByValue, "$"].join(""), "i");
const filteredU = UserModel.find({ [filterUsersBy]: regexPattern})

如果我理解正确,因为你使用的是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)

什么是相同的,在这个查询

相关内容

  • 没有找到相关文章

最新更新