2016-02-16 31 views
0

我有一個非常大的csv,我試圖通過搜索。我決定使用MongoDB並加載整個csv,以便以後可以用python和pymongo快速搜索它,而不是每次嘗試搜索時都加載全部80MB。我無法弄清楚的是,如何搜索給定用戶代理的集合並將其與項目'_id'字段中的正則表達式匹配。我首先將browscap條目處理爲python rege,然後將該條目插入到mongo集合中。使用MongoDB和pymongo將字符串匹配到正則表達式


如何使用pymongo搜索正則表達式mongoID的給定用戶代理?


實施例的用戶代理:

AppleCoreMedia/1.0.0.12B440(ipad公司; U; CPU OS 8_1_2像的Mac OS X; EN_US)

例Browscap項:

AppleCoreMedia/1.0 *(iPhone * CPU OS 8 *,如Mac OS X *)*

實施例的Regex蒙戈ID:???

^AppleCoreMedia \/1 \\ 0 \ * \\(iPhone * CPU \\ OS \\ 8 * \\如\ \的Mac OS \\ \\ X *?\\)。*?$

+0

你在這裏說什麼? 「正則表達式」本身是存儲在_id中的字符串嗎?或者只是存儲在'_id'中的用戶代理字符串,並且您想用正則表達式搜索?對於前一種情況,您需要[MongoDB反向正則表達式](http://stackoverflow.com/questions/15966991/mongodb-reverse-regex)中提到的'$ where'評估。認爲它不是一個好表演者,如果是這樣的話,你可能想重新思考你在做什麼。 –

回答

0

用戶代理會爲_id領域一個糟糕的選擇,由於低熵。

除此之外,_id被索引的事實應該導致mongoDB將大部分/全部數據存儲在內存中。

+0

但是正則表達式的id是索引的。我不知道實際的用戶代理是什麼,直到我有搜索。 – Saja