Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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
如何搜索db.collection.find({foo://^bar$/I});在mongo上使用mongo Java驱动程序_Java_Regex_Mongodb_Case Insensitive_Mongodb Java - Fatal编程技术网

如何搜索db.collection.find({foo://^bar$/I});在mongo上使用mongo Java驱动程序

如何搜索db.collection.find({foo://^bar$/I});在mongo上使用mongo Java驱动程序,java,regex,mongodb,case-insensitive,mongodb-java,Java,Regex,Mongodb,Case Insensitive,Mongodb Java,我正在尝试使用java驱动程序在mongodb中进行不区分大小写的查询。我在名为foo的字段中有一个字符串,例如“abcdef”。当我搜索“abc”时,搜索必须返回空,但它总是返回包含“abcdef”的元素 如果我在mongo控制台中执行此操作 db.collection.find( { foo: /^abc$/i } ) 它可以工作,但不会返回任何结果。不返回包含“abcdef”的对象,如果我们有一个foo为“abc”的对象,它只返回一个 但在java驱动程序中,我已经尝试过了 BasicD

我正在尝试使用java驱动程序在mongodb中进行不区分大小写的查询。我在名为foo的字段中有一个字符串,例如“abcdef”。当我搜索“abc”时,搜索必须返回空,但它总是返回包含“abcdef”的元素

如果我在mongo控制台中执行此操作

db.collection.find( { foo: /^abc$/i } )
它可以工作,但不会返回任何结果。不返回包含“abcdef”的对象,如果我们有一个foo为“abc”的对象,它只返回一个

但在java驱动程序中,我已经尝试过了

BasicDBObject query = new BasicDBObject();
query.put("foo",  "^"+abc+"$");
query.put("$options", "i");


但它不起作用

您可以使用类似于
^(abc)
的模式,例如

    Pattern compile = Pattern.compile("^(abc)", Pattern.CASE_INSENSITIVE); 

使用Java Regexp对象或使用BSON
{“foo”:“$regex”
{“$regex”:“^abc$”}}`。谢谢,我们也使用这个dbobjectinclause=newBasicDBObject(“$regex”,“abc”)。append($options”,“i”);BasicDBObject查询=新的BasicDBObject(“foo”,包括);这将返回包含字符串“abc”的所有内容,我们只想返回“abc”或“abc”,而不是“abcdef”,当然它会返回。因为正如我建议的,您在开始时省略了插入符号。锚定与字符串的“开始”匹配。正如人们所建议的那样,您首先在问题上使用了regex标记。而
$
表示“字符串结束”,或者您可以使用
\b
作为单词边界。这是一个正则表达式问题。
    Pattern compile = Pattern.compile("^(abc)", Pattern.CASE_INSENSITIVE);