问题描述
我目前正在使用KMongo,这非常好。简单易用,语法漂亮,等等。
但是在查询一些我无法弄清楚的数据时遇到了一个问题。我正在过滤某些字段,当我在Mongo Shell
或robo 3T
上运行查询时,它可以正常工作。但是,当我尝试在Kotlin应用程序上运行时,它(仅在某些情况下)不起作用。我这样查询:
collection.find(
MyEntity::name regex filter.name,MyEntity::role eq filter.role,)
但是我还尝试使用接收过滤值的本机查询编写一个字符串,但我遇到了同样的问题。一个具体的例子是这个查询:
{ 'role': 'vendOR','name': 'Internal Revenue Service'}
如果我像这样在robo 3T
上运行:
db.getCollection('MyEntity').find({ 'role': 'vendOR','name': 'Internal Revenue Service'})
我收到了我期望的结果,但是如果我使用完全相同的查询KMongo运行(并且我用调试器进行了两次检查),结果什么也没收到:
collection.find("{ 'role': 'vendOR','name': 'Internal Revenue Service'}")
当我使用正则表达式进行查询时(如第一个示例一样),它似乎只返回较小的值:如果我使用'Internal Revenue Service'
查询名称,则不会产生任何结果,但是如果我仅使用{{ 1}}结果正确。
有人知道它可能是什么吗?似乎很简单,但我无法弄清楚,这真让我丧命。
解决方法
一天后,我发现注入了错误计算的偏移量。因此,当查询更具体时,它什么也不返回。 真是可悲。