【问题标题】:exact match with case insensitive in mongodb与mongodb中不区分大小写的完全匹配
【发布时间】:2019-07-17 19:31:23
【问题描述】:

我想匹配集合中的用户名。

User.findOne({ username: {$regex: new RegExp('^' + req.body.username, 'i')} }).select('_id').exec(function (err, user) {
                if (err) {
                    res.json({  "status": 0, "message": "Something went wrong" });
                } else {
                    if (user) {
                        res.json({ "status": 0, "message": "This username is already taken." });
                    } else {
                        res.json({ "status": 1, "message": "Username is valid" });
                    }
                }
            });

我已经在收藏中使用用户名“vikash1”进行录制。我想检查用户名是否存在。 当我输入“Vikash2”时,上面的查询将返回“用户名已经存在” 但在这里,我输入“vikash2”就不同了。 我想要完全匹配但对现金不敏感。

【问题讨论】:

  • 在此处使用排序规则stackoverflow.com/questions/52015712/…...User.findOne({ username: req.body.username }).collation({ locale: "en" })
  • 同时指定强度选项。 .collation({ locale: "en",strength: 2 })
  • User.findOne({ username: req.body.username }).collat​​ion({ locale: "en",strength: 2 }).select('_id').exec(function (err , 用户) { });它不起作用@ashh
  • 不可以,我已经测试过了。删除select 并再次检查。
  • 删除后选择它正在工作,谢谢

标签: mongodb mongoose mongodb-query


【解决方案1】:
User.findOne({ username: req.body.username }).collation({ locale: "en", strength: 2 }).exec(function (err, user) {
                if (err) {
                    res.json({  "status": 0, "message": "Something went wrong" });
                } else {
                    if (user) {
                        res.json({ "status": 0, "message": "This username is already taken.", "data": user });
                    } else {
                        res.json({ "status": 1, "message": "Username is valid" });
                    }
                }
            });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2013-10-19
    • 2016-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多