我是新手,所以开始吧。
试图从 MongoDb 中获取名为“Bob”的用户。
我有:
UserData ud = MonConMan.instance().getDb().find(UserData.class, "name","bob").get();
如果“bob”的首字母为“Bob”,则无法找到该“bob”。
我知道我可以获得一个 List
并执行 equalsIgnoreCase
但是
我可以使用一些运算符吗?
我有用户登录,必须测试他们是否已注册。用户可以随心所欲地输入他的名字,因此必须找到一种方法来使用 equalsIgnoreCase。是的,这是一个问题,如果有 10,000 个,我无法获取所有名称并执行 equalsIgnoreCase。一开始当然可以将所有用户名保存为小写,但这会破坏名称的视觉外观。
查看 wiki 但看不到任何内容..
最佳答案
像这样使用 java 正则表达式。
String name = "bob";
Pattern pattern = Pattern.compile("^" + bob + "$", Pattern.CASE_INSENSITIVE);//This line will create a pattern to match words starts with "b", ends with "b" and its case insensitive too.
Query<UserData> query = createQuery().field("name").equal(pattern).retrievedFields(true, "id");//Replace `id` with what ever name you use in UserData for '_id'
UserData user = query.get();
if(user!=null){
//he is already registered
}
else{
//He is a new guy
}
(我不擅长正则表达式,所以您可能已经在某处阅读过
$&
^。)
您应该确保您用于验证新用户的用户名在您的系统中应该是唯一的。
关于java, Morphia 如何在使用 Morphia 查找方法时比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7533573/