1

我正在尝试在 MongoDB Compass 中进行一些基本过滤,但我一直没有得到任何结果。这是一个没有过滤的例子

在此处输入图像描述

这是过滤

在此处输入图像描述

我尝试了以下过滤器,但它们都不起作用:

{"INSTALL_TYPE" : /.*vpos.*/}
{"DIVISION" : /.*20.*/}
{"DIVISION" : "20"}

但是,在同一数据库的另一个表中,搜索工作正常。

在此处输入图像描述

当我尝试在这张表中的 MongoDB Compass 中进行过滤时,为什么我没有得到任何结果?

4

2 回答 2

1

具体来说,包含引号的列名将导致 Compass 的行为与 OP 描述的一样。如果您的 CSV 如下所示:

"INCIDENT_ID"
"2016376978"

导入指南针。请注意,列标题包含双引号,因此过滤器不会产生结果。 列名包含双引号,过滤结果为 0 行

正如公认的答案所说,我没有改变我的任何价值观。我只更改了列标题,所以我的 CSV 看起来像这样:

INCIDENT_ID
"2016376978"

现在导入集合意味着列标题将没有引号,并且与以前相同的过滤器不会产生结果(即使值本身包含双引号): 列名不包含双引号,因此过滤器有效

编辑

为了澄清,您可能仍希望在导入 .csv 之前从 CSV中删除双引号就我而言,从值中删除双引号会很方便并且更接近我的期望。

但是, Compass 查询不是必需的;OP 的原始正则表达式查询将返回结果,只要它们的列名被去掉引号: 即使结果值有双引号,正则表达式查询也会找到结果

于 2019-07-02T23:31:20.837 回答
1

问题是由于字符串中有引号。从 Oracle SQL 导出表时,引号将一些值括起来。然后当我导入 CSV 时,包含所有值的 CSV 引用导入良好。但是,当导入只有一些值带有引号的 CSV 时,会导致这些条目在字符串中带有引号。

清除所有包含引号的 CSV 文件、清空表格并重新导入 CSV,使所有条目不再具有引号。现在过滤工作正常。

于 2018-07-30T21:16:52.600 回答