在 Mongodb Compass 中使用过滤器时没有结果
No results when using filters in Mongodb Compass
我正在尝试在 MongoDB Compass 中进行一些基本过滤,但一直没有结果。这是一个没有过滤的例子
这是过滤
我试过以下过滤器,但都不起作用:
{"INSTALL_TYPE" : /.*vpos.*/}
{"DIVISION" : /.*20.*/}
{"DIVISION" : "20"}
但是,在同一数据库的另一个 table 中,搜索工作正常。
为什么我尝试在 MongoDB Compass 中过滤时没有得到任何结果table?
问题是由于字符串中有引号引起的。从 Oracle SQL 导出表时,引号将一些值括起来。当我随后导入 CSV 时,包含所有值的 CSV 引用导入正常。但是,当导入只有部分值带有引号的 CSV 时,会导致这些条目在字符串中带有引号。
清除所有引号的 CSV 文件、清空表格并重新导入 CSV,使所有条目不再有引号。现在过滤工作正常了。
具体来说,包含引号的列名称 将导致 Compass 的行为与 OP 描述的一样。
如果您的 CSV 如下所示:
"INCIDENT_ID"
"2016376978"
正在导入 Compass。请注意,header 列包含 double-quotes,因此过滤器不会产生结果。
我没有像接受的答案所说的那样更改我的任何 值。我只更改了列 headers,所以我的 CSV 看起来像这样:
INCIDENT_ID
"2016376978"
现在导入 collection 意味着列 header 将没有引号,并且 与以前相同的过滤器 将不会产生结果(即使值本身包含 double-quotes):
编辑
澄清一下,您可能仍想在导入 之前从 CSV 值 中删除 double-quotes。在我的例子中,从 values 中删除 double-quotes 会很方便并且更接近我的期望。
我正在尝试在 MongoDB Compass 中进行一些基本过滤,但一直没有结果。这是一个没有过滤的例子
这是过滤
我试过以下过滤器,但都不起作用:
{"INSTALL_TYPE" : /.*vpos.*/}
{"DIVISION" : /.*20.*/}
{"DIVISION" : "20"}
但是,在同一数据库的另一个 table 中,搜索工作正常。
为什么我尝试在 MongoDB Compass 中过滤时没有得到任何结果table?
问题是由于字符串中有引号引起的。从 Oracle SQL 导出表时,引号将一些值括起来。当我随后导入 CSV 时,包含所有值的 CSV 引用导入正常。但是,当导入只有部分值带有引号的 CSV 时,会导致这些条目在字符串中带有引号。
清除所有引号的 CSV 文件、清空表格并重新导入 CSV,使所有条目不再有引号。现在过滤工作正常了。
具体来说,包含引号的列名称 将导致 Compass 的行为与 OP 描述的一样。 如果您的 CSV 如下所示:
"INCIDENT_ID"
"2016376978"
正在导入 Compass。请注意,header 列包含 double-quotes,因此过滤器不会产生结果。
我没有像接受的答案所说的那样更改我的任何 值。我只更改了列 headers,所以我的 CSV 看起来像这样:
INCIDENT_ID
"2016376978"
现在导入 collection 意味着列 header 将没有引号,并且 与以前相同的过滤器 将不会产生结果(即使值本身包含 double-quotes):
编辑
澄清一下,您可能仍想在导入 之前从 CSV 值 中删除 double-quotes。在我的例子中,从 values 中删除 double-quotes 会很方便并且更接近我的期望。