Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB和Java驱动程序:“;“忽略案例”;质疑_Java_Mongodb_Case Insensitive - Fatal编程技术网

MongoDB和Java驱动程序:“;“忽略案例”;质疑

MongoDB和Java驱动程序:“;“忽略案例”;质疑,java,mongodb,case-insensitive,Java,Mongodb,Case Insensitive,这就是我现在使用的代码,如何添加“ignorecase”属性 DBObject query = new BasicDBObject("prop", value); 谢谢当我遇到确切的问题时,我无法通过忽略case进行查询。我最终复制了我想要搜索的值,并将其规范化。在这种情况下,您可以创建一个新属性,并将其转换为小写,并在其上建立索引 编辑: DBObject ref = new BasicDBObject(); ref.put("myfield", Pattern.compile(".*myV

这就是我现在使用的代码,如何添加“ignorecase”属性

DBObject query = new BasicDBObject("prop", value);

谢谢

当我遇到确切的问题时,我无法通过忽略case进行查询。我最终复制了我想要搜索的值,并将其规范化。在这种情况下,您可以创建一个新属性,并将其转换为小写,并在其上建立索引

编辑:

DBObject ref = new BasicDBObject();
ref.put("myfield", Pattern.compile(".*myValue.*" , Pattern.CASE_INSENSITIVE));
DBCursor cur = coll.find(ref); 
我想知道这是否有效?

mapValue=newhashmap();
db.iolog.find({$where:"this.firstname.toLowerCase()==\"telMan\".toLowerCase()"});
DBObject ref = new BasicDBObject();
ref.append("firstname", new BasicDBObject("$where","this.firstname.toLowerCase()=="+firstname+".toLowerCase()"));
mapValue.put(“$options”,“i”); mapValue.put(“$regex”,“smth”); searchMap.put(“名称”,mapValue); collection.find(新的BasicDBObject(searchMap));
如果您使用的是Spring java,下面提到的方法可以使它以不区分大小写的方式进行搜索

public List<Discussion> searchQuestionByText(String qText){
        Query query = new Query();
        query.addCriteria(Criteria.where("discussionName").regex(qText,"i"));
        return mongoTemplate.find(query, Discussion.class);     
    }
public List searchQuestionByText(字符串qText){
查询=新查询();
query.addCriteria(Criteria.where(“discussionName”).regex(qText,“i”));
返回mongoTemplate.find(查询、讨论、类);
}

我还试图最好地利用“不区分大小写”的实现。 如果使用的是或更高版本,则应使用以下代码,并使用$选项参数!它非常容易使用:

Document basicQuery = new Document();
basicQuery.append("key", new Document("$regex","value").append("$options","i")); 
“键”和“值”字段需要使用您自己的数据进行更改


(我还建议您使用$regex参数进行搜索,以便通过部分匹配检索信息,以防数据库中的记录越来越多)。

顺便说一下,这是1.4版。也许现在情况已经改变了。在玩控制台时,我意识到键入db.collection.find({“prop”:/value/I})会使我的查询不区分大小写。必须有一种方法可以使用Java驱动程序启用“i”属性,即使通过正则表达式查询也无所谓。但是,键入DBObject query=newBasicDBObject(“prop”,“/”+value+“/i”)不起作用。请尝试一下。我希望这就是你要找的。
Document basicQuery = new Document();
basicQuery.append("key", new Document("$regex","value").append("$options","i"));