【问题标题】:MongoDb in Java to find usersJava中的MongoDb查找用户
【发布时间】:2016-05-13 21:08:44
【问题描述】:

我的数据库中有这三个用户,它们具有以下键:

乔恩 111

乔恩-222

乔恩-333

我目前写的代码只能通过key在数据库中找到一个用户。 我怎样才能返回所有这些用户?

public void getMongoDB() {

    DB db = mongo.getDB("people");
    DBCollection table = db.getCollection("users");

    BasicDBObject searchQuery = new BasicDBObject();
    searchQuery.put("key", "Jon-111"); // what do I do here to return all the 'Jon' users?

    DBCursor cursor = table.find(searchQuery);

    int dbSize = cursor.size(); // size is 1
    while (cursor.hasNext()) {
        logger.debug(""+cursor.next()+"\n");
    }       
    logger.debug("users table");

}

提前致谢

【问题讨论】:

  • 类似于"key","LIKE jon-*'。但是我从未使用过 MongoDb。所以它可能取决于 MongoDb 的具体情况。
  • @MikeT 这是一种非常标准的 SQL 方法,但是对于 Java/Mongo,它稍微复杂一些,需要正则表达式,请参阅下面的答案以获取一些示例。

标签: java mongodb database


【解决方案1】:

如果您希望搜索“以 Jon 开头”,请尝试:

 searchQuery.put("key", java.util.regex.Pattern.compile("^Jon"));

您将需要使用正则表达式来执行此类查询,如我的示例所示。

为您提供更多示例:

“以乔恩结尾”:

searchQuery.put("key", java.util.regex.Pattern.compile("Jon$"));

“包含乔恩”:

searchQuery.put("key", java.util.regex.Pattern.compile(".*Jon.*"));

【讨论】:

    【解决方案2】:

    您可以使用正则表达式模式来传递值。如下所示:

    searchQuery.put("key", java.util.regex.Pattern.compile("Jon-\\.*"));
    

    【讨论】:

      猜你喜欢
      • 2022-06-17
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多