首页 > 解决方案 > 与mongodb中不区分大小写的完全匹配

问题描述

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

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”它是不同的。我想要完全匹配但对现金不敏感。

标签: mongodbmongoosemongodb-query

解决方案


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" });
                    }
                }
            });

推荐阅读