mongodb中,如何不区分大小写查找?
 发布于 11 年前  作者 blueandhack  14341 次预览  最后一次回复是 11 年前  来自  

如两个相同的用户名CNODE和cnode 前者已注册,将要注册后者 在node中

User.findOne({username: {$regex: username, $options: "i"}}, {username: 1, email: 1, create: 1, head: 1}, function (err, user) {
        callback(err, user);
});

但是这么写的话cn和cno还有cnod都会算作已注册过,如何写才可以?

5 回复
jiangzhuo

存的時候冗余一個已經轉換為小寫的字段做查詢用,在寫少查多的的情況下很有用。

blueandhack

非常感谢,一时没想起来,感谢你的方法!

dotnil

$regex: ‘^’ + username + ‘$’ 也可以吧?不过实时生成 regex 很容易被用户调戏

alsotang

我查了查,好像只能用正则来做了。不懂效率会不会慢。

alsotang

@blueandhack 对的,比如

  1. 用户输入的包含大小写的存为 showname
  2. 将 showname downcase 存为 username