首页 > 解决方案 > MongoDB搜索不返回相同字符串的文档

问题描述

我有一个非常奇怪的问题,两个看似相同的字符串在 MongoDB 中返回不同的匹配项。

我已经复制并粘贴了下面的两个(显然不同的)字符串,两边带有引号(直接来自 Robo3T),以突出显示可能存在的任何空白 - 其中没有可见的空白。

"KUWAIT: Premier League"
"KUWAIT: Premier League"

使用其中一个字符串搜索会返回一组文档,使用另一个字符串搜索会返回另一组文档。这两组文件都应作为一个返回。

这开始让我头疼,因为我将字符串存储在另一个我动态查找的集合中,并且有一半时间它不匹配。

无论如何我可以验证这里的问题是什么?我查看了 BSON 类型,只能看到一个 String $type,Robo3T 证实了这一点。

使用 Mongoose 和使用 Robo3T 查询存在问题。

谢谢。

标签: javascriptnode.jsmongodb

解决方案


使用 MongoPlayground,我能够对此进行合乎逻辑的下一步并找出问题所在。

我冒险访问https://www.online-toolz.com/tools/text-unicode-entities-convertor.php并注意到空白被保存为%A0而不是%20- 不知道这是可能的。

所以我只需要在我的收藏中替换所有%A0( \u00a0) ,%20一切都会好起来的。

顺便说一句,MongoDB 不允许您使用\uie查询那些 Unicode 间隙{$regex: /.*\uxxxx.*/}。你必须使用{$regex: /.*\x{xxxx}.*/},我在这里发现的:MongoDB \uXXXX issue

我很惊讶在将文档保存为潜在问题时没有在任何地方标记 - 这至少是一个有用的警告 - 但我至少现在可以解决我的问题。

感谢您的评论为我指明了正确的方向。


推荐阅读