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%”的,
查询。效果非常好!再次感谢!:)请看我的新问题:请看看你是否能以任何方式提供你的专业知识。谢谢!:)