MongoDB select查询的Java等价物

MongoDB select查询的Java等价物,java,mongodb,Java,Mongodb,我想检索以下信息: select names from database where names like 'Jon'; 但是对于Java中的MongoDB。本质上,它应该返回包含Jon一词的所有名称,如Jonathan、Jong等。我知道MongoDB中有$in操作符,但如何使用Java驱动程序在Java中实现同样的操作?我一直在到处寻找,但什么也没有得到。我试过:query=newBasicDBObject(“名称”,newBasicDBObject(“$in”,“Jon”)),和quer

我想检索以下信息:

select names from database where names like 'Jon';
但是对于Java中的MongoDB。本质上,它应该返回包含Jon一词的所有名称,如Jonathan、Jong等。我知道MongoDB中有
$in
操作符,但如何使用Java驱动程序在Java中实现同样的操作?我一直在到处寻找,但什么也没有得到。我试过:
query=newBasicDBObject(“名称”,newBasicDBObject(“$in”,“Jon”))
,和
query=newBasicDBObject(“名称”,newBasicDBObject(“$in”,Jon))


但是这两种方法都不起作用:(请帮助!

检查Mongo Java,再加上一个映射Mongo对象的好方法

与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”的所有对象。

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

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

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

如果你发布了一些你尝试过的代码,这会有所帮助。@dadu:我发布了,但我的特定查询没有任何问题。我尝试了
query=new BasicDBObject(“name”,new BasicDBObject($in”,“Jon”);
,和
query=new BasicDBObject(“名称”,新的BasicDBObject(“$in”,Jon));
但它们都不起作用:(我也查找了Morphia,但我有点赶时间,实现这一点有点超出了我的时间范围,特别是因为我只需要一个查询。@AaronKurtzhals:现在请参考我的评论。我意识到我没有发布我的代码。SQL查询不会像你说的那样做。要获取名称中包含字符串“Jon”的所有内容,您将使用类似于“%Jon%”的
仅获取以Jon开头的内容,您将使用类似于“Jon%”的
。MongoDB
$in
运算符用于在数组字段中搜索。要搜索字符串片段,可以使用
$regex
和正则表达式。是的,这就是我要找的,我的查询更像是伪代码,而不是实际代码:P您能相应地编辑您的答案吗?谢谢!)我编辑了我的答案,并添加了一个类似于“%Jon%”的
查询。效果非常好!再次感谢!:)请看我的新问题:请看看你是否能以任何方式提供你的专业知识。谢谢!:)