我有一个非常奇怪的问题,两个看似相同的字符串在 MongoDB 中返回不同的匹配项。
我已经复制并粘贴了下面的两个(明显不同的)字符串,两边都带有引号(直接来自 Robo3T)以突出显示可能存在的任何空格 - 其中没有可见的空格。
"KUWAIT: Premier League"
"KUWAIT: Premier League"
使用其中一个字符串搜索返回一组文档,使用另一个字符串搜索返回另一组文档。这两套文件应作为一个返回。
这开始让我头疼,因为我将字符串存储在我动态查找的另一个集合中,但有一半时间它不匹配。
无论如何我可以验证这里的问题是什么?我查看了 BSON 类型并且只能看到一个字符串 $type
,Robo3T 确认了这一点。
使用 Mongoose 和使用 Robo3T 查询时存在问题。
谢谢。
最佳答案
使用 MongoPlayground,我能够对此进行合乎逻辑的下一步,并解决了问题。
我冒险去了 https://www.online-toolz.com/tools/text-unicode-entities-convertor.php并注意到空格被保存为 %A0
而不是 %20
- 不知道这是可能的。
所以我只需要用 %20
替换我的集合中的所有 %A0
(\u00a0
) 一切都会很好去吧。
顺便说一句,MongoDB 不允许您使用 \u
即 {$regex:/.*\uxxxx.*/} 查询这些 Unicode 间隙
。您必须使用我在这里发现的 {$regex:/.*\x{xxxx}.*/>
:MongoDB \uXXXX issue .
我很惊讶在将文档保存为潜在问题时没有在任何地方标记它 - 这至少是一个有用的警告 - 但我现在至少可以解决我的问题。
感谢您给我指明正确方向的意见。
关于javascript - MongoDB 搜索不返回相同字符串的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56187422/