[英]How to make a dynamic regex in MongoDB?
我想出了一个正则表达式来匹配包含某个短语的术语,它可以包含字母或数字,但不包括破折号。 例如, test-123
、 test123
和test
都会被^[test0-9._-]+$/gi
匹配。
但是,在 MongoDB 中,我不太确定如何动态搜索它。 我试过了,
const { search } = req.query;
const regex = new RegExp(`/^[${search}0-9._-]+$/`, "ig");
const results = await Test.find({ name: { $regex: regex } })
我也试过
await Test.find({ name: { $regex: ".*[" + search + "0-9._-]+$.*", $options: "i" } })
不仅如此,
const regex = new RegExp(`/^[${search}0-9._-]+$/`, "ig");
await Test.find({ name: regex });
不知道如何让这个工作,我做错了什么?
打印new RegExp(
/^[${search}0-9._-]+$/ , "ig")
返回以下模式/\\/^[test0-9._-]+$\\//gi
这可能是不是您想要实现的目标(附加斜线)。
您可以尝试这种方式(在 Mongo Shell 中测试):
let search = "test";
let regex = new RegExp(`^[${search}0-9._-]+$`, "ig");
db.test.find({ name: { $regex: regex } });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.