繁体   English   中英

如何在 MongoDB 中创建动态正则表达式?

[英]How to make a dynamic regex in MongoDB?

我想出了一个正则表达式来匹配包含某个短语的术语,它可以包含字母或数字,但不包括破折号。 例如, test-123test123test都会被^[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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM