gpt4 book ai didi

node.js - 正则表达式在 mongodb 命令行中工作,但不适用于 mongoose

转载 作者:太空宇宙 更新时间:2023-11-03 23:20:29 26 4
gpt4 key购买 nike

我有一个名为 Skills 的架构,其中有一个名为 name 的字符串字段。我想根据给定的字符串对字段执行搜索。对于像 java 这样的普通字符串,它工作得很好。但是,对于C++,它省略了++部分,因为+是正则表达式中的特殊字符。所以我用 \\+ 替换了 + ,它在 mongodb 中工作正常。为此,以下是我在 mongodb 命令行中的查询,它给出了所需的结果:

db.skills.find({"name": {'$regex': '^c\\+\\+', '$options': 'i'}})

以下是我的 Mongoose 代码:

    word = '^' + req.query.word;
word = word.replace(/\+/g, '\\+')
word = word.replace(/\./g, '\\+')
Skill.find({"name": {'$regex': word, '$options': 'i'}}).limit(10).exec(function (err, results) {
res.json({'results': results})
})

这里我添加了两个替换语句,将 + 替换为 \\+,将 . 替换为 \\.

但是,上面的代码不起作用。它给我的结果为零。如果我有什么地方错了,请帮助我。

谢谢

最佳答案

let word = "c++";

Skill.find({ "name": RegExp("^" + word.replace(/\+/g,"\\+"),"i") })

Skill.find({ "name": { "$regex": "^" + word.replace(/\+/g,"\\+"), "$options": "i" } })

均返回文档没有问题

关于node.js - 正则表达式在 mongodb 命令行中工作,但不适用于 mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com