0

次の SQL クエリと同等のものを作成しようとしています。

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

あらゆる種類のオプションを試しましたが、次のエラーが引き続き発生します。

falsecom.mongodb.MongoException: $or requires nonempty array

誰もこれを行う方法を知っていますか?

ありがとう。

4

1 に答える 1

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」が出力されます。

于 2012-06-19T12:05:46.160 に答える