6

我想检索以下信息:

select names from database where names like 'Jon';

但对于 Java 中的 MongoDB。本质上,它应该返回所有包含单词 Jon 的名称,例如 Jonathan、Jong 等。我知道$inMongoDB 中有运算符,但是我如何在 Java 中使用 Java 驱动程序来做同样的事情?我一直试图到处寻找它,但什么也没得到。我试过: query = new BasicDBObject("names", new BasicDBObject("$in", "Jon"));, 和query = new BasicDBObject("names", new BasicDBObject("$in", Jon));

但他们都没有工作:(请帮忙!

4

3 回答 3

10

与该 SELECT 语句等效的 MongoDB Java 驱动程序将是:

BasicDBObject fields = new BasicDBObject().append("name", 1); // SELECT name
BasicDBObject query = new BasicDBObject().append("name", "Jon"); // WHERE name = "Jon"
DBCursor results = yourCollection.find(query, fields); // FROM yourCollection

当你想搜索字符串的一部分时,你可以使用$regex操作符:

query = new BasicDBObject("name", new BasicDBObject("$regex", "Jon"));

这将为您提供名称与正则表达式 Jon匹配的所有对象,即在任何地方都包含字符串“Jon”的所有内容。

于 2012-12-04T21:49:06.730 回答
1

查看 Mongo-Java官方站点,以及一个用于映射 mongo 对象的不错的

于 2012-12-04T21:38:43.923 回答
0

MongoDB 中的运算符$in类似于INSQL 中的运算符。例如,它可以用于执行类似 SQL 的查询

SELECT * FROM table WHERE id IN {1, 4, 6, 7, 9}

这就是为什么它对你不起作用。正如其他人已经建议的那样,使用正则表达式。

于 2014-05-06T13:50:26.433 回答