2014-10-06 66 views
2

我試圖搜索我的MongoDB中所有字符串電話號碼都是不同的格式。如何在MongoDB中搜索各種電話號碼格式?

E.g. (323)704-3234,3237043234,323-704-3234,+ 1-323-704-3234,323.704.3234等

是否有一個運算符或正則表達式,我可以使用MongoDB提供的,允許你找到減去特殊字符的字符串?

例如在C#中,

collection.Find(Query.Matches("PhoneNumber",(some regex, replace, or where)3237043234)) 
+1

我認爲在剝離所有非數字字符後更新Mongo數據庫中的電話號碼字段會更好/更容易。那麼你只需要尋找'3237043234'或'13237043234' – 2014-10-06 16:48:07

+0

是的..這就是我在想的。它看起來像是一個$ replace操作符的情況,所以它可以像SQL的替換一樣運行。 https://jira.mongodb.org/browse/SERVER-829 – user1364768 2014-10-06 16:50:40

回答

0

很抱歉,但你做錯了。

您可以接受任何格式的電話字符串(如果需要),但在存儲之前您需要將它們轉換爲某種特定的格式。在你的情況下,最好的辦法就是將它轉換爲數字(更小的尺寸存儲,創建索引)。

再一次,當用戶請求一個號碼 - 他也可以以任何格式提供它,並且在您搜索它之前,您會將其轉換爲號碼。 (不要忘記將電話號碼字段放在索引處)爲了更加方便用戶,您可以用用戶提問的相同格式顯示輸出。

要更改所有當前手機,只需遍歷數據庫並更新每個數字即可。

+0

我正在尋找一種不涉及更改數據庫中的值的解決方案。謝謝。 – user1364768 2014-10-07 16:38:30

+0

@ user1364768明白了。但只是爲了讓你知道:你會發現任何解決方案都會很麻煩和緩慢。 – 2014-10-07 22:09:55