0
我有一個查詢可能太複雜,MongoDB無法快速執行它。如果有什麼我可以改變我的MongoDB的設置,我很想知道!使用正則表達式加速MongoDB查詢
下面是一個例子查詢是搜索工作集合了「API」一詞
db.jobs.find(
{
'budget': {'$exists': true, '$ne': ''},
'$or': [
{'title': /(^|[\\s.,])api.*/gi},
{'query': /api'/gi},
{'description': /(^|[\\s.,])api.*/gi}
]
}
)
這最終以超過3秒跨越32000個文檔(摘自MongoDB的探查器)運行:
"ntoreturn" : 0,
"ntoskip" : 0,
"nscanned" : 0,
"nscannedObjects" : 34266,
"keyUpdates" : 0,
"writeConflicts" : 0,
"numYield" : 274,
我在考慮在標題,查詢,描述中添加一個索引,但是MongoDB只允許每個集合有一個文本索引,而我有三個我正在查詢的字符串字段(標題,查詢,描述)。
你可以用'\ b'替換替換嗎?你也應該反過來''\ s。,] | ^',因爲第一種情況應該是最常見的情況。 – sweaver2112
您可以在任意數量的字段上創建文本索引。 'db.jobs.createIndex( { title:「text」, query:「text」,description:「text」 } )''。嘗試看看它是否改善了您的查詢響應時間。 – Veeram
IMO,您需要檢查您的Regexes。和[相關的問題](http://stackoverflow.com/q/17501798/4519059);)。 –