如何搜索db.collection.find({foo://^bar$/I});在mongo上使用mongo Java驱动程序
我正在尝试使用java驱动程序在mongodb中进行不区分大小写的查询。我在名为foo的字段中有一个字符串,例如“abcdef”。当我搜索“abc”时,搜索必须返回空,但它总是返回包含“abcdef”的元素 如果我在mongo控制台中执行此操作如何搜索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
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);