【问题标题】:MongoDB and JAVA - Logical OR with Regex queryMongoDB 和 JAVA - 使用正则表达式查询的逻辑或
【发布时间】:2012-06-18 17:03:02
【问题描述】:

我正在尝试创建以下 SQL 查询的等效项:

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

我尝试了各种选项,但我不断收到以下错误:

falsecom.mongodb.MongoException: $or requires nonempty array

有人知道怎么做吗?

谢谢。

【问题讨论】:

  • 当您遇到异常时,您究竟在 Mongo 中尝试了什么?
  • 你用的是什么库?你的查询代码是什么?
  • 你可以从这个[1]中获得灵感:stackoverflow.com/questions/10620771/…
  • 非常感谢 Ravi,它可以使用这种方法!

标签: java mongodb


【解决方案1】:

您可以使用 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”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多