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);)。 –