如何使用“;比如”;使用JavaAPI?

如何使用“;比如”;使用JavaAPI?,java,groovy,mongodb,find,Java,Groovy,Mongodb,Find,这个问题与另一个问题非常相似 我基本上想使用mongodb版本的sql“like”“%m%”运算符 但在我的情况下,我使用的是用于mongodb的JavaAPI,而另一篇文章使用的是mongodb shell 我尝试了在另一个线程中发布的内容,效果很好 db.users.find({"name": /m/}) 但在java中,我在BasicDBObject上使用put方法,并将其传递给DBCollections对象上的find()方法 BasicDBObject q = new BasicDB

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

我基本上想使用mongodb版本的sql“like”“%m%”运算符

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

我尝试了在另一个线程中发布的内容,效果很好

db.users.find({"name": /m/})
但在java中,我在BasicDBObject上使用put方法,并将其传递给DBCollections对象上的find()方法

BasicDBObject q = new BasicDBOBject();
q.put("name", "/"+m+"/");
dbc.find(q);
但这似乎不起作用


有人有什么想法吗?

您需要传递一个Java正则表达式()的实例:


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

在spring data mongodb中,这可以通过以下方式完成:

Query query = new Query();
query.limit(10);        
query.addCriteria(Criteria.where("tagName").regex(tagName));
mongoOperation.find(query, Tags.class);

您必须首先引用文本,然后使用编译器获取正则表达式:

q.put("name",  Pattern.compile(Pattern.quote(m)));
如果不使用某些字符,则不会转义


e、 g.使用
作为
m
参数将引发异常。

使其不区分大小写:

Document doc = new Document("name", Pattern.compile(keyword));
collection.find(doc);
Document doc = new Document("name", Pattern.compile(keyword, Pattern.CASE_INSENSITIVE));
collection.find(doc);

可能不是实际答案(直接执行终端查询)

if(searchType.equals(“employeeId”)) {

addCriteria(Criteria.where(searchType).regex(java.util.regex.Pattern.compile(searchValue))

employees=mongoOperations.find(查询,Employee.class,“OfficialInformation”);
}

+1确实拯救了我的理智。我一直在寻找如何做一些负正则表达式,因为$not操作符除了$Regexpa Sudheer Kumar Dara之外没有其他操作,欢迎。请考虑添加解释并正确地编写代码。
Document doc = new Document("name", Pattern.compile(keyword, Pattern.CASE_INSENSITIVE));
collection.find(doc);
public void displayDetails() {
    try {
        // DB db = roleDao.returnDB();
        MongoClient mongoClient = new MongoClient("localhost", 5000);
        DB db = mongoClient.getDB("test");
        db.eval("db.test.update({'id':{'$not':{'$in':[/su/]}}},{$set:{'test':'test3'}},true,true)", new Object[] {});
        System.out.println("inserted  ");

    } catch (Exception e) {
        System.out.println(e);
    }
}