java - java - 如何使用java api查询 “like”的mongodb?

这个问题与另一个 post 非常相似

我基本上是想用mongodb版本的sql "like"'%m%' operator

但在我的情况下,我使用 mongodb 的 java api,而另一篇文章使用的是 mongodb shell

我尝试了其他帖子中发布的内容,效果很好

db.users.find({"name": /m/})

但在 java 中,我使用 BasicDBObject 上的 put 方法并将其传递给 DBCollections 对象上的 find() 方法

BasicDBObject q = new BasicDBOBject();
q.put("name", "/"+m+"/");
dbc.find(q);

但这似乎不起作用。

有人有什么想法吗?

最佳答案

您需要传递一个 Java RegEx (java.util.regex.Pattern) 的实例:

BasicDBObject q = new BasicDBObject();
q.put("name",  java.util.regex.Pattern.compile(m));
dbc.find(q);

这将在发送到服务器时转换为 MongoDB 正则表达式,以及任何正则表达式标志。

https://stackoverflow.com/questions/5608584/

相关文章:

mongodb - 在现有的 mongodb 中恢复单个集合

java - MongoDB 组合键

mongodb - 如何使用 mongoose 将文档插入 mongodb 并获取生成的 id?

node.js - CouchDB、MongoDB 和 Redis 中的哪个数据库适合从 Node.

MongoDB - 十进制类型的值怎么样?

arrays - Mongoose save() 不更新数据库文档中数组中的值

spring - Spring Data MongoDB 和 Hibernate OGM for M

node.js - Mongoose - 按标准查找子文档

mongodb - 检查MongoDB中是否存在索引

python - 使用 MongoDB ( Python ) 将新属性插入文档