java - 用户搜索功能使用 Java 驱动程序查询 MongoDB 中的数据

标签 java mongodb search driver

我想使用 MongoDB 在 Eclipse 中创建一个简单的用户搜索功能。一旦用户输入他们想要在数据库中查找的内容,所有与其匹配的数据都将被打印出来。我怎样才能做到这一点?

这是迄今为止我的代码:

public static void searchFirstName()
{
    System.out.println("Enter first name you are searching for:");
    search = userInput.nextLine();

    FindIterable<Document> iterable = db.getCollection("names").find(all("anyname", search));
    System.out.println(iterable);
}

最佳答案

如果我理解正确,您正在寻找某种通配符搜索来匹配您的姓名,即使它们不完全匹配?

我附上了一些代码,它使用正则表达式来实现类似SQL的通配符搜索%term%

这里是:

public static void main(String[] args) {
    MongoClient mongo = new MongoClient("localhost", 27017);
    MongoDatabase db = mongo.getDatabase("myDatabase");

    List<Document> someDummyData = new ArrayList<>();
    for (int i = 0; i < 20; i++) {
        someDummyData.add(new Document("name", "Leslie" + i));
    }
    someDummyData.add(new Document("name", "John Wayne"));
    someDummyData.add(new Document("name", "Wayne"));
    someDummyData.add(new Document("name", "Acme"));
    someDummyData.add(new Document("name", "Leslie"));

    db.getCollection("names").insertMany(someDummyData);

    //we will have 24 names in our database
    System.out.println(db.getCollection("names").count());

    //obtain the search term ....
    String searchTerm = "Leslie";

    //an index is a good idea, if we want to use wildcard search... 1 means ascending order
    db.getCollection("names").createIndex(new Document("name", 1));

    //we will find exactly one element      -> this is exact match like in SQL: where name = searchTerm
    Iterable<Document> search1 =  db.getCollection("names").find(new Document("name", searchTerm));

    for(Document search : search1) {
        System.out.println("Exact match: " + search);
     }


    //we will find a few matches -> this is wildcard match like in SQL: where name LIKE %searchTerm$

    Iterable<Document> search2 = db.getCollection("names").find(regex("name", String.format(".*((?i)%s).*",
            searchTerm)));

    for (Document search : search2) {
        System.out.println("Wildcard match: " + search);
    }

    mongo.close();
}

关于java - 用户搜索功能使用 Java 驱动程序查询 MongoDB 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31522025/

相关文章:

java - 在 SpringBoot 应用之外使用 MockMVC

java - 清理 apache-karaf 缓存的命令

php - 在 yii2 mongodb 中查找具有相同属性且超过 2 个值的位置

javascript - 在 JavaScript 中发送 HTTP 请求以从 MongoDB 获取结果

php - 具有跨多个表的相关性的站点搜索的好例子 (php/mysql)

php - 基于 MySQL 的搜索未显示完整结果

java - GET 请求 - 重定向到另一个页面并保留参数

java - Android FileoutputStream 空指针异常

javascript - 如何维护时区

search - 您如何有效地实现文档相似性搜索系统?