【发布时间】:2018-05-19 16:47:47
【问题描述】:
所以我在 mongoDB 中有一个集合,其结构如下:
{
"_id": 129flaslkfja,
"number": 10
}
在这个集合中,一些元素的 number 字段设置为 1,其他元素设置为 2,其他元素设置为 3,依此类推,以随机顺序排列。我想得到一个数组,它的第一个位置是所有编号为 1 的模型,下一个位置是所有编号为 2 的模型,依此类推。我知道我可以通过循环和简单的 find 或 where 来做到这一点,但我想知道在性能方面是否有更简单、更清洁和更有效的方法。
我尝试过使用 $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
}]
]
【问题讨论】:
-
什么?尝试这个;编辑并添加 2 个或三个以上的输入文档(它们很小),并展示一个您希望输出文档看起来像的示例。
标签: ruby-on-rails ruby mongodb