如何在Java MongoDB中查询整个单词

时间:2012-10-10 08:52:59

标签: java mongodb conditional-operator

我正在使用Java Mongo DB驱动程序 我正在做一些OR和AND操作来查询集合。

QueryObj = new BasicDBObject("key1",Pattern.compile("v",Pattern.CASE_INSENSITIVE));
QueryList.add(QueryObj);
DBObject OrQuery = new BasicDBObject("$or", QueryList);
DBCursor cursor = MyCollection.find(OrQuery);  

我的Sample集合有4行(JSON格式可能有误)

{
"key1": ["val1","val3"]
},
{
"key1": ["val2","val3"]
},
{
"key1": ["val3"]
},
{
"key1": ["val1","val2"]
}

如果我搜索“val2”

QueryObj = new BasicDBObject("key1",Pattern.compile("val2",Pattern.CASE_INSENSITIVE));  

我得到预期的输出第2和第4行

{
"key1": ["val2","val3"]
},
{
"key1": ["val1","val2"]
}  

如果我只搜索“v”

QueryObj = new BasicDBObject("key1",Pattern.compile("v",Pattern.CASE_INSENSITIVE));

我应该得到null设置,但是获得所有4行,尽管数组有一个字符“v” 我需要搜索整个单词。

2 个答案:

答案 0 :(得分:3)

你的意思是你想要搜索完整的单词' v' - 在这种情况下,我相信你的模式如下,其中^表示单词的开头,$表示单词的结尾。

QueryObj = new BasicDBObject(" key1",Pattern.compile(" ^ v $",Pattern.CASE_INSENSITIVE));

此致

答案 1 :(得分:0)

我希望它可以帮到你

 values ="val1";

我们在DB中使用CMD:

 db.collection_name.findOne({ key1: "val1"})

同样使用

query.put("key1", values)

在声明

中使用findOne()代替find()

如果错了,请纠正我