如何对 mongodb ObjectId 字段进行正则表达式查询

Kho*_*hon 5 java regex mongodb

这有点棘手..如何对 ObjectId 字段进行正则表达式查询?

我正在使用 java api,所以这就是我到目前为止所拥有的

BasicDBObject q = new BasicDBObject()
q.put(field, Pattern.compile(value, Pattern.CASE_INSENSITIVE));
Run Code Online (Sandbox Code Playgroud)

这对于任何常规领域都适用。但似乎不适用于 ObjectId 字段。我认为这是因为我无法将 ObjectId 与字符串进行比较?我不能完全将部分 id 或正则表达式放入新的 ObjectId 中。它只会抛出一个错误。

对此有什么想法吗?我试图为用户提供一种输入 id 的一部分的方法,并能够取回具有该模式的所有文档。

提前致谢!

roc*_*000 4

据我所知,ObjectId 是 MongoDB 中的一个自己的类型,并且行为不像字符串。尽管 MongoDB 中还有其他与字符串不同的类型,例如数组等,可以通过正则表达式模式进行搜索,但这对于 ObjectId 来说似乎是不可能的。为了实现像你这样的 id 搜索,我可能会定义一个自己的索引 id 字段,其中包含一个简单字符串形式的 id 和冷淡的 ObjectId。

  • 洛基是对的;我们将 ObjectId 作为特殊类型存储在 MongoDB 中。具体来说,ObjectId 的本机表示比字符串版本存储得更紧凑。请记住,您不必使用 ObjectId 作为 _id 的值:它可以是任何有效类型,包括文档。如果您需要进行 RE 匹配,您应该考虑 diff 类型;但请记住,除非“^”锚定,否则 RE 匹配不会命中索引。 (2认同)