所以我在mongoDB中有一个集合,其结构如下:
{
"_id": 129flaslkfja,
"number": 10
}
在这个集合中,一些元素的数字字段按随机顺序设置为1个其他为2,其他元素为3等。我想得到一个数组,它在第一个位置所有模型的数字1在下一个位置所有模型的数字为2,依此类推。我知道我可以通过循环和简单的查找来实现这一点,但我想知道在性能方面是否有更简单,更清晰和更有效的方法。
我尝试过$ group,$ match但这不是我想要的。
例如,这是我数据库中的数据:
[{
"_id": a1,
"number": 1
},
{
"_id": a2,
"number": 3
},
{
"_id": a3,
"number": 2
},
{
"_id": a4,
"number": 2
},
{
"_id": a5,
"number": 2
},
{
"_id": a6,
"number": 1
}]
所以我想按照数字值分组:
[
[{
"_id": a1,
"number": 1
},
{
"_id": a6,
"number": 1
}],
[{
"_id": a3,
"number": 2
},
{
"_id": a4,
"number": 2
},
{
"_id": a5,
"number": 2
}],
[{
"_id": a2,
"number": 3
}]
]
答案 0 :(得分:2)
您也可以尝试以下代码
original_list.group_by(&:number).values
答案 1 :(得分:1)
在红宝石中你可以这样做:
<table ng-repeat="list in holidayList" style="width:100%">
<tbody>
<tr>
<td>{{list[0].month}}</td>
</td>
<tr ng-repeat="leave in list">
<td width="14%">{{leave.date}}</td>
<td width="20%">{{leave.monthCode}}</td>
<td>{{leave.holiday_name}}</td>
</tr>
</tbody>
</table>
目前尚不清楚您是否要求使用Ruby解决方案。