KMongo查询从Mongo Shell产生不同的结果

时间:2020-09-01 08:01:07

标签: mongodb kotlin kotlin-coroutines kmongo

我目前正在使用KMongo,这非常好。简单易用,语法漂亮,等等。

但是在查询一些我无法弄清楚的数据时遇到了一个问题。我正在过滤某些字段,当我在Mongo Shellrobo 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}}结果正确。

有人知道它可能是什么吗?似乎很简单,但我无法弄清楚,这真让我丧命。

1 个答案:

答案 0 :(得分:0)

一天后,我发现注入了错误计算的偏移量。因此,当查询更具体时,它什么也不返回。 真是可悲。

相关问题