带有附加条件和排序的文本查询

时间:2017-06-14 17:08:27

标签: mongodb

这是我的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' } }。接下来的步骤是按scoreskip按特定偏移排序,limit按某些数字排序。

问题: 输出可能具有相同videoId的结果,这就是问题所在。我只想要列表中的独特videoId的第一个结果。因此,如果有五个项目具有相同的videoId,那么我希望保留具有最高textScore的项目并弃掉其余项目。

一个解决方案: ...手动过滤输出... 我现在这样做的方法是使用JavaScript手动过滤结果。我希望有更好的方法在MongoDB中完成所有这些,因为那可能会更快。

0 个答案:

没有答案