我有一个非常大的集合(超过 800k),我需要实现一个基于标签的自动完成(仅基于单词开头)功能的查询。我的文件如下所示:
{
"_id": "theid",
"somefield": "some value",
"tags": [
{
"name": "abc tag1",
"vote": 5
},
{
"name": "hij tag2",
"vote": 22
},
{
"name": "abc tag3",
"vote": 5
},
{
"name": "hij tag4",
"vote": 77
}
]
}
例如,如果我的查询将针对所有以“ab”开头并具有“somefield”即“some value”的标签,则结果将是“abc tag1”、“abc tag3”(仅名称)。我更关心查询的速度,而不是插入和更新的速度。
我假设聚合框架是正确的方法,但是对于非常快速的查询来说,最好的管道和索引是什么?
这些文档不是“标签”文档,它们是代表客户端对象的文档,它们包含更多数据字段,为简单起见,我省略了,每个客户端都有几个标签和另一个字段(我更改了它的名称,所以它不会与标签混淆大批 )。我需要获得一组客户拥有的所有标签不重复的集合。