我必须用Java运行这个查询

 db.Users.find({"name": /^ind/i})

我的Java代码是

Document findQuery = new Document();
findQuery.append("name", Pattern.compile("/^"+name+"/i"));
FindIterable<Document> iterable = db.getCollection("Users").find(findQuery);

它没有返回任何数据,我认为上面的java代码正在转换

> /^ind/i into "/^ind/i"

提前谢谢.

Edit:

根据斯特里比雪夫的建议,更新了查询及其工作状态

db.Users.find({"name": {"$regex": /^ind/, "$options": "i"}})

Java代码

Document regQuery = new Document();
regQuery.append("$regex", "^(?)" + Pattern.quote(name));
regQuery.append("$options", "i");

Document findQuery = new Document();
findQuery.append("name", regQuery);
FindIterable<Document> iterable = db.getCollection("Users").find(findQuery);

推荐答案

在Java Pattern.compile中不能使用正则表达式分隔符,因为Java中还有其他方法(例如标志)可以这样做.

要强制执行不区分大小写的搜索,请使用内联修饰符(?i).所以

Pattern.quote只是转义所有正则表达式元字符,以便将它们视为文本(与\Q\E相同).

Mongodb相关问答推荐

在一个视图中连接两个集合MongoDB;展开有什么作用?

如何使用ID数组对一个集合中的金额求和并更新另一个集合中的字段?

没有文档的MongoDB集合中的不一致,但当我执行count()时,它告诉我有15个文档

MongoDB 将 JSON 字符串转换为数组[{obj1},{obj2}]的实际对象

MongoDB乘以对象值?

MongoDB - 分组并找到前 N 个

_id 和 $oid 的区别; mongo 数据库中的 $date 和 IsoDate

解析命令行时出错:unrecognized option --rest

是否可以迭代 mongo 游标两次?

MongoDB - 如果新值更大,则更新字段

mongoose默认值等于其他值

Mongoid 有 Map/Reduce 吗?

Java MongoDB/BSON 类混淆

使用 nodejs/mongoose 部分更新子文档

Python - Pymongo 插入和更新文档

MongoDB - 我如何找到另一个集合中的文档未引用的所有文档

REACT 获取发布请求

Mongoose - 获取 _id 列表而不是具有 _id 的对象数组

MongoError:Can't extract geo keys from object

MongoDB 引用的最佳实践