这有点棘手..你如何在ObjectId字段上进行正则表达式查询?
我正在使用java api,所以这就是我目前所拥有的
BasicDBObject q = new BasicDBObject()
q.put(field, Pattern.compile(value, Pattern.CASE_INSENSITIVE));
这适用于任何常规字段。但似乎不适用于ObjectId字段。我假设是因为我无法将ObjectId与字符串进行比较?并且我不能完全将部分id或正则表达式放入新的ObjectId中。它只会抛出一个错误。
对此有何想法?我正在尝试为用户提供一种输入id的一部分的方法,并能够使用该模式获取所有文档。
提前感谢!
答案 0 :(得分:4)
据我所知,ObjectId在MongoDB中是一个自己的类型,并且行为不像字符串。虽然MongoDB中的其他类型不同于字符串,如数组等,可以通过正则表达式模式进行搜索,但对于ObjectId来说这似乎是不可能的。要实现像你这样的id搜索,我可能会定义一个自己的索引id字段,其中包含一个id作为一个简单的字符串和冷漠的ObjectId。