我现在有一个contact集合,代表所有联系人。现在按照每个联系人的首字母分组,每个首字母下的联系人限制在5个以内。举个例子吧:
这个一个联系人表:
Kobe
Kevin
Kolon
Kaidi
Kaisin
Kama
Branyt
Bolon
Boo
我要得到的效果是这样的,以A开头的联系人有六个我只能返回5个,以B开头的联系人有3个全部会被返回。返回结果如下
K:
Kobe
Kevin
Kolon
Kaidi
Kaisin
B:
Branyt
Bolon
Boo
采用mongo的aggregate的写法,或者其他写法也行
这个问题还是我自己来吧,我后来的解决方案是这样的。先查询出所有的首字母的集合,然后分别用每个首字母去查询出前五个联系人。最终得到的一条记录
是这样的一个首字母字段initial后面跟着首字母。一个contacts字段后面跟着一个数组,数组中的元素是每个联系人的名字。然后把他们放在一个列表中返回就ok啦
用
$substr
处理开头的字符,然后group分组
{$slice: 5}
去前5个元素