2012-06-18 48 views
0

我試圖創建下面的SQL查詢的equivalant:的MongoDB和JAVA - 邏輯或用正則表達式查詢

Select * from X where a like 'a%' OR b like 'a%' 

我試過各種選擇,但我不斷收到以下錯誤:

falsecom.mongodb.MongoException: $or requires nonempty array 

有誰知道如何做到這一點?

謝謝。

+0

當你遇到異常情況時,你究竟在Mongo中試過了什麼? – jsalonen

+0

你在使用什麼庫?你的查詢的代碼是什麼? – toniedzwiedz

+0

您可以採取的靈感來自這個 [1]:http://stackoverflow.com/questions/10620771/how-to-or-few-conditions-in-mongodb-using-java-driver/10620972#10620972 –

回答

2

可以使用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()); 

這將打印「2」。