0

我有一个包含 1000 条记录的集合有一个字符串列。

我正在使用 Jongo API 来查询 mongodb。

我需要找到列字符串以字母“AB”开头并以斜杠“/”结尾的匹配记录

在查询上需要帮助来查询以选择相同的。

谢谢。

4

3 回答 3

9

我假设您知道如何在 Jongo API 中使用正则表达式进行查询,并且只是在寻找必要的正则表达式来做到这一点?

如果是这样,此正则表达式将找到任何以“AB”(区分大小写)开头的字符串,后跟任意数量的其他字符,然后以正斜杠(“/”)结尾:

^AB.*\/$
^  - matches the start of the string
AB - matches the string 'AB' exactly
.* - matches any character ('.') any number of times ('*')
\/ - matches the literal character '/' (backslash is the escape character)
$  - matches the end of the string

如果您刚刚开始使用正则表达式,我强烈推荐Regex 101网站,它是一个很棒的沙箱,可以在其中测试正则表达式并解释表达式的每个步骤,从而使调试更加简单。

于 2016-08-24T12:07:16.333 回答
0

你可以试试这个。

public List<Product> searchProducts(String keyword) {
            MongoCursor<Product> cursor = collection.find("{name:#}", Pattern.compile(keyword + ".*")).as(Product.class);
            List<Product> products = new ArrayList<Product>();
            while (cursor.hasNext()) {
                Product product = cursor.next();
                products.add(product);
            }
            return products;
        }
于 2017-02-27T14:06:14.897 回答
0

我找到了解决方案,以下工作正常。

db.getCollection('employees').find({employeeName:{$regex: '^Raju.*\\/$'}})
db.getCollection('employees').find({employeeName:{$regex: '\/$'}})
getCollection().find("{employeeName:{$regex: 
              '^Raju.*\\\\/$'}}").as(Employee.class);
getCollection().find("{employeeName:{$regex: '\\/$'}}").as(Employee.class);
getCollection().find("{employeeName:#}", 
               Pattern.compile("\\/$")).as(Employee.class);
getCollection().find("{"Raju": {$regex: #}}", "\\/$").as(Employee.class);

map = new HashMap<>();
map.put("employeeName", Pattern.compile("\\/$"));
coll = getCollection().getDBCollection().find(new BasicDBObject(map));
于 2016-08-24T14:22:58.770 回答