javascript - MongoDB搜索不返回相同字符串的文档
问题描述
我有一个非常奇怪的问题,两个看似相同的字符串在 MongoDB 中返回不同的匹配项。
我已经复制并粘贴了下面的两个(显然不同的)字符串,两边带有引号(直接来自 Robo3T),以突出显示可能存在的任何空白 - 其中没有可见的空白。
"KUWAIT: Premier League"
"KUWAIT: Premier League"
使用其中一个字符串搜索会返回一组文档,使用另一个字符串搜索会返回另一组文档。这两组文件都应作为一个返回。
这开始让我头疼,因为我将字符串存储在另一个我动态查找的集合中,并且有一半时间它不匹配。
无论如何我可以验证这里的问题是什么?我查看了 BSON 类型,只能看到一个 String $type
,Robo3T 证实了这一点。
使用 Mongoose 和使用 Robo3T 查询存在问题。
谢谢。
解决方案
使用 MongoPlayground,我能够对此进行合乎逻辑的下一步并找出问题所在。
我冒险访问https://www.online-toolz.com/tools/text-unicode-entities-convertor.php并注意到空白被保存为%A0
而不是%20
- 不知道这是可能的。
所以我只需要在我的收藏中替换所有%A0
( \u00a0
) ,%20
一切都会好起来的。
顺便说一句,MongoDB 不允许您使用\u
ie查询那些 Unicode 间隙{$regex: /.*\uxxxx.*/}
。你必须使用{$regex: /.*\x{xxxx}.*/}
,我在这里发现的:MongoDB \uXXXX issue。
我很惊讶在将文档保存为潜在问题时没有在任何地方标记 - 这至少是一个有用的警告 - 但我至少现在可以解决我的问题。
感谢您的评论为我指明了正确的方向。
推荐阅读
- html - HTML BEM 命名约定
- symfony - 应用程序中缺少翻译而不是控制台
- javascript - 在 Javascript 中读取带有多个表的 CSV
- python - 为什么我在 elif 行中收到无效的语法错误?
- python - 在 Django 中进行迁移时,TransactionManagementError “事务管理块以挂起的 COMMIT/ROLLBACK 结束”
- javascript - 遍历 Typescript 中的每个对象
- mysql - 如何为 AroraDB 5.7.12 转换数组中的字符串?
- javascript - 是否有一种 es6 方法来创建一个数组并有条件地将项目推入其中?
- react-native - 从 v3 升级到 react-navigation v5
- powershell - Add-AzureRmAccount:无法在 DLL“iphlpapi.dll”中找到名为“GetPerAdapterInfo”的入口点