1

我为 Mongo 编写了一个查询来搜索电话号码。问题是电话条目是 aString而不是 a Number。起初我认为它工作正常,但现在我意识到如果查询格式不正确,它将不匹配。

所以我想我的问题是无论格式如何,匹配电话号码的最简单方法是什么?

在最坏的情况下,我使用 $where 语句并通过从两个值中删除数字并对其进行正则表达式匹配来检查相等性。只是想知道是否有更优化的方法来做到这一点?

4

1 回答 1

2

我首先将规范化的电话号码(例如,去除非数字字符或格式化为标准格式)存储在数据库中,因为它们尚未规范化,因此为每个搜索请求即时执行将是昂贵的,因此,如果您还没有太多条目(例如,如果这仍在开发中),那么一个脚本将一次性规范所有条目(或者如果您有生产系统,则在非偷窥时间分几批)将成为可能。

然后你的 where 子句只会规范化输入,然后搜索会容易得多。

顺便说一下,地址也是如此,您必须规范化数据以执行良好的搜索,或者您必须开发一些模糊匹配算法,这只会变慢。(并且可能比你想象的要花更多的时间)

于 2013-04-16T16:04:19.307 回答