我有一个查询可能太复杂,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 Profiler):
"ntoreturn" : 0,
"ntoskip" : 0,
"nscanned" : 0,
"nscannedObjects" : 34266,
"keyUpdates" : 0,
"writeConflicts" : 0,
"numYield" : 274,
我正在考虑在标题,查询,描述上添加索引,但MongoDB只允许每个集合使用一个文本索引,而我有三个字符串字段(标题,查询,描述),我正在查询。
答案 0 :(得分:0)
解决方案是创建一个基于3个字段的文本索引。我不知道Mongo允许你为每个文本索引使用多个字段。现在超级快!