java - MongoDB 和 JAVA - 带有正则表达式查询的逻辑或

标签 java mongodb

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

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

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

falsecom.mongodb.MongoException: $or requires nonempty array

有人知道怎么做吗?

谢谢。

最佳答案

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

关于java - MongoDB 和 JAVA - 带有正则表达式查询的逻辑或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11087628/

相关文章:

Java GUI 创建框架

mongodb - Mongos 计数项目不是真实的?

java - 如何在 Spring Data Mongodb 上使用 SpEL 表达式?

node.js - 如何使用聚合函数计算mongoDB中的唯一数据

javascript - $inc of mongoose 防止负值

node.js - 使用变量作为带有修饰符的 mongodb 中的键名

java - 如何在没有任何循环的情况下修改集合值以获取新集合?

java - 用循环的空行替换三角形的每一行

java - GCJ(GNU Compiler for Java)是发布 webapp 的可行工具吗?

java - 如何通过 key 从 JSON 中获取值?