javascript - 如何在带有字符串变量的mongoDB查询中使用$regex?

标签 javascript regex mongodb

我正在尝试使用用户生成的字符串变量在 MongoDB 数据库中执行简单的通配符查询。例如,如果用户搜索“Bu”,则应从数据库返回“Burger”和“Burger King”等内容。我已经搜索并尝试了几件事,但似乎没有任何效果。任何帮助将不胜感激。注意:这是客户端 JS。

    var text = document.getElementById("Search_Box").value;

    var regex = new RegExp(text + ".*");

    client.login().then(() => db.collection('businesses')
        .find({name:{$regex:regex}}).then(docs => {
          console.log("[MongoDB Stitch] Connected to Stitch");

最佳答案

如果您有以下文件:

{
    "_id" : ObjectId("5a0f3a464d8a2fe38bec4e92"),
    "name" : "Burger"
}

{
    "_id" : ObjectId("5a0f3a464d8a2fe38bec4e94"),
    "name" : "Burger King"
}

{
    "_id" : ObjectId("5a0f3a464d8a2fe38bec4e96"),
    "name" : "Booby's"
}

{
    "_id" : ObjectId("5a0f3a464d8a2fe38bec4e98"),
    "name" : "McDonald"
}
<小时/>

开头

要让一切都以“Bu”开头,你可以这样做

db.collection('businesses').find({name: {$regex: '^Bu'}})

db.collection('businesses').find({name: {$regex: /^Bu/}})
<小时/>

在中间

如果您需要在单词中任何位置包含“Ki.*g”的任何内容,您可以这样做:

db.collection('businesses').find({name: {$regex: 'Ki.*g'}})

db.collection('businesses').find({name: {$regex: /Ki.*g/}})

努力并阅读文档。一切都在那里进行了解释,并提供了更多细节。 https://docs.mongodb.com/manual/reference/operator/query/regex/

关于javascript - 如何在带有字符串变量的mongoDB查询中使用$regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47356919/

相关文章:

node.js - Mongodb 从任意数组位置查询

javascript - 是否可以在没有本地数据库的情况下使用 PassportJS?

javascript - 在 Javascript 中获取 url 的最后一部分

使用 [.]+ 而不是 .+ 时,正则表达式不起作用

java - 正则表达式:String.split 和 Pattern.matches 不一致

带有 redis 的 MongoDB

python - 从 mongodb 集合中提取所有 _id 的最佳方法

javascript - 在 ASP.NET 项目中使用缓存的最佳方法是什么?

javascript - 调用匿名函数javascript

javascript - 使用 ng-if 正在清除模型查看表单环绕