使用 mongodb 和 mongoose 中的对象正则表达式数组进行过滤

Filtering with an array of objects Regex in mongodb and mongoose

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

例如,如果我试图通过 email 查找用户,我希望能够输入“@gma”或至少输入“gma”,理想情况下,它应该 return包含指定过滤值的所有用户的数组。这在搜索 firstName 等属性时应该是相同的

我当前的解决方案只有在我提供与我的数据库中已有的值相匹配的完整值时才有效。例如 test@gmail.com 代表 emailjohn 代表 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)

this query

中的相同之处