MongoDB查询-过滤器仅适用于“ _id”

时间:2018-10-27 12:12:29

标签: mongodb compass

我正在使用mongodb v4.0.3,这种情况在外壳和指南针中都会发生。

这仅在特定集合下发生。以前它具有覆盖的ID(不是默认的mongodb ID,而是一个字符串。我删除了集合,然后重新创建了该集合)。

例如,我具有以下结构(“ mystructure”):

{  
   "_id":ObjectId("5bd44eb528d61e3374b5e6ea"),
   "custom_field":"data",
}

当我不使用过滤器进行查询时,它会返回所有文档:

db.mystructure.find({});

当我搜索其对象ID时,它会正确返回

db.mystructure.find( {"_id": ObjectId("5bd44eb528d61e3374b5e6ea")} );

但是当我尝试过滤任何字段时,它不会返回任何内容

db.mystructure.find( {"custom_field": "data"} );

起初,我认为可以通过使用mongodb自动生成的ID重新创建集合来解决该问题,但是问题仍然存在。字符串等中没有“隐藏”空格。罗盘中的相同查询也不起作用。其他收藏也可以。它在同一数据库上,并且具有相同的用户。

为什么会这样?

非常感谢您。

答案:

在通过Compass将完整集合导出为JSON并使用VSCODE打开后,我注意到字段名称的开头有一个问号,就像一个无法识别的字符。我删除了这些,重新上传了收藏集,现在它可以正常工作了。我想知道为什么它既没有在Compass中也没有在Shell中显示。

0 个答案:

没有答案