2016-09-19 33 views
0

我有结构像下面MongoDB的索引和搜索逗号分隔值

{ 
    "name": "", 
    "age": 35, 
    "hobbies": "gardening, skiing, horse riding, soccer", 
    "Address": { 
    "addrline 1": "", 
    "addrline 2": "", 
    "City": "", 
    "Zip": "" 
    } 
} 

想根据爱好进行搜索。例如输入“滑雪”应返回此文档。我有大约80K记录。什么是“嗜好”元素的最佳索引策略,以便它能够快速返回结果。

我是否必须仅通过基于字符串的正则表达式模式搜索“业余爱好”,还是有其他技术可以更快速地进行数据检索?

回答

4

一个更好的设计是将爱好作为存储阵列

"hobbies": ["gardening", "skiing", "horse riding", "soccer"] 

然后,您可以在查询中使用$来匹配任何一个或多个爱好。 在爱好键上创建一个索引以加快查询速度。

+0

完全同意@DhruvPathak,也许你可以运行一个脚本或命令,并将逗号分隔值变成一个数组,然后在爱好上添加一个多键索引,这样你就不必做正则表达式查询了,正则表达式就是使用索引进行更快速的搜索效率不高。 –

相关问题