【问题标题】:Node mongodb search节点mongodb搜索
【发布时间】:2017-12-20 23:55:15
【问题描述】:

如何通过用户名搜索 mongodb ?我有具有唯一用户名的数据库,但我想在输入搜索查询时获取包含相似字符的所有用户名的列表。例如,如果我搜索 'name',我会得到 'name1'、'name_1'、'name2' 等。 这是我的代码:

router.post('/search', (req, res, next) => {

   User.find({username: req.body.username})
    .then(user => {
       if(user){
         res.json({user});
       }else {
         return res.json({success: false, message: 'User not found'});
       }
   });

【问题讨论】:

    标签: node.js mongodb


    【解决方案1】:

    您可以在查询中使用正则表达式,这意味着查询的字段值也可以与正则表达式匹配。例如:{ username: /^name/} 在这种情况下将搜索所有以 name 开头的用户名,但您可以使用正则表达式。

    欲了解更多信息:https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html

    【讨论】:

      【解决方案2】:

      尝试正则表达式:

      User.find({"username": /.*name.*/})
      

      【讨论】:

        【解决方案3】:

        几种方法:

        1. 如前所述的正则表达式:

          User.find({ 用户名: /name/i });

        2. $哪里:

          User.find({ $where: { "username.toLowerCase().indexOf(name.toLowerCase()) > -1" }});

        请注意,这都非常慢,尤其是在您有很多用户的情况下,因为这些操作不会使用索引。如果您使用带有前缀(单词开头)的正则表达式,您可以获得一些帮助,例如

        User.find({ username: /^name/ });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-26
          • 1970-01-01
          • 1970-01-01
          • 2013-07-19
          • 1970-01-01
          相关资源
          最近更新 更多