我正在使用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” 我需要搜索整个单词。
答案 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()
如果错了,请纠正我