这个问题与另一个 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/