我是新手,所以这里 试图从MongoDb获得一个名为“Bob”的用户。
我有:
UserData ud = MonConMan.instance().getDb().find(UserData.class, "name","bob").get();
如果首都有“Bob”,则无法找到“bob”
我知道我可以获得List
并且equalsIgnoreCase
但是为了
有一些我可以使用的运营商?
我有用户登录,必须进行测试以查看他们是否已注册。用户可以随意键入他的名字,因此必须找到equalsIgnoreCase的方法。是的,这是一个问题,我不能得到所有的名字,并做equalsIgnoreCase,如果有像10,000。当然,最初可以用小写字母保存所有用户名,但这会破坏名称的视觉外观。
看着维基但看不到任何......
答案 0 :(得分:2)
使用java regex,就像这样。
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
}
(I am not good at regex, so you may have read about
$ &
^ somewhere. )
您应该确保用于验证新用户的用户名在整个系统中应该是唯一的。
答案 1 :(得分:1)
您可以使用以下代码查找UserData
的名称:
Query<UserData> query = createQuery().filter("name","bob");
find(query);
在我的应用程序中,此代码返回具有“bob”值的字段UserData
的所有name
。
代码也可以这样:
Query<UserData> query = createQuery().field("name").equal("bob");
find(query);
这些代码位于扩展UserDataDao
的{{1}}中,并在construtor中接收来自morphia的数据存储区。
答案 2 :(得分:1)
结束了两个领域 - lowercaseusername - originalusername
这样我可以使用lowercaseusername
搜索用户