[英]MongoDB and JAVA - Logical OR with Regex query
I am trying to create an equivalant of the following SQL query: 我试图创建以下SQL查询的等效项:
Select * from X where a like 'a%' OR b like 'a%'
I tried all sorts of options but I keep getting the following error: 我尝试了各种选项,但我不断收到以下错误:
falsecom.mongodb.MongoException: $or requires nonempty array
Does anyone know how to do this? 有谁知道如何做到这一点?
Thanks. 谢谢。
You can use the QueryBuilder class to make the code a bit more readable: 您可以使用QueryBuilder类使代码更具可读性:
Mongo m = new Mongo();
m.setWriteConcern(WriteConcern.SAFE);
DBCollection c = m.getDB("test").getCollection("or-test");
c.drop();
c.insert(new BasicDBObject("a", "abba"));
c.insert(new BasicDBObject("b", "abba"));
c.insert(new BasicDBObject("a", "bbba"));
c.insert(new BasicDBObject("b", "bbba"));
Pattern pattern = Pattern.compile("^a");
DBObject query = QueryBuilder.start().or(
QueryBuilder.start("a").regex(pattern).get(),
QueryBuilder.start("b").regex(pattern).get()
).get();
System.out.println(c.find(query).count());
This will print "2". 这将打印“2”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.