javascript - MongoDB 搜索不返回相同字符串的文档

标签 javascript node.js mongodb

我有一个非常奇怪的问题,两个看似相同的字符串在 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/

相关文章:

javascript - 我应该如何将滚轮或滚动事件从一个元素转移到另一个元素?

javascript - 如何在不触发事件的情况下改变select2的值?

javascript - 从二进制的有符号 2 的补码中获取十进制

ruby-on-rails - rails 3 : Migrating a model to MongoDB

javascript - Node + Express + Nginx 未设置 Cookie

javascript - 检查索引之一中的字段之一是否为空

node.js - MySQL 查询如何使用和不使用占位符(?)?

node.js - 在 Node.js Step 模块中使用参数调用下一步

javascript - Node.js:POST 未将数据发送到数据库

mongodb - 使用其他字段值访问随机字段