这是我的MongoDB中的数据结构:(每个videoId
字段可能会有不同语言的结果)
...
{
id: '5123',
description: 'lorem ipsum',
langcode: 'eng',
videoid: '1523'
}
{
id: '6234',
description: 'lorem ipsum',
langcode: 'eng',
videoid: '12345'
}
{
id: '1525',
description: 'lorem ipsum',
langcode: 'rus',
videoid: '12345'
}
...
要输出结果,我会通过{ $text: { $search: query } }
进行文字搜索,并将评分字段添加到{ score: { $meta: 'textScore' } }
。接下来的步骤是按score
和skip
按特定偏移排序,limit
按某些数字排序。
问题:
输出可能具有相同videoId的结果,这就是问题所在。我只想要列表中的独特videoId的第一个结果。因此,如果有五个项目具有相同的videoId
,那么我希望保留具有最高textScore
的项目并弃掉其余项目。
一个解决方案: ...手动过滤输出... 我现在这样做的方法是使用JavaScript手动过滤结果。我希望有更好的方法在MongoDB中完成所有这些,因为那可能会更快。