如何在MongoDB中按键的特定顺序排序

时间:2016-07-08 01:31:15

标签: mongodb meteor angular-meteor

美好的一天。我有以下文件。

{
  id: 1,
  status: "sleeping"
}
{
  id: 2,
  status: "eating"
},
{
  id: 3,
  status: "drinking"
},
{
  id: 4,
  status: "drinking"
},
{
  id: 5,
  status: "sleeping"
},
{
  id: 6,
  status: "studying"
},
...

如何按以下顺序按状态对其进行排序? 睡觉饮用饮食学习

我正在使用Angular-Meteor。我在服务器中尝试发布一个限制的集合,因为我处理的是非常大的数据集。

我正在研究聚合,我认为这是适用于此案例的正确解决方案,但Meteor并不支持它。

3 个答案:

答案 0 :(得分:1)

好吧,我最后附上了一个数字,按以下顺序对文件进行排序:睡眠饮用饮食,<强>研究

{
  id: 1,
  status: "sleeping",
  statusOrder: 0
}
{
  id: 2,
  status: "eating",
  statusOrder: 2
},
{
  id: 3,
  status: "drinking",
  statusOrder: 1
},
{
  id: 4,
  status: "drinking",
  statusOrder: 1
},
{
  id: 5,
  status: "sleeping",
  statusOrder: 0
},
{
  id: 6,
  status: "studying",
  statusOrder: 3
},
...

坦率地说,这更容易。

但如果您对使用MongoDB群组感兴趣,我发现了一些可能有用的东西。链接here

答案 1 :(得分:0)

MongoDb只支持排序A - &gt; Z,Z - &gt; A,0 - &gt; 9,9-&gt; 0

在sort参数中指定要排序的字段或值1或-1,以分别指定升序或降序排序。

实施例: db.orders.find()。sort({&#34; status&#34;:-1})

答案 2 :(得分:0)

mongodb聚合框架在服务器端通过monbro:mongodb-mapreduce-aggregation包提供(例如)。您可以在出版物中使用它。

另一种方法是在某种程度上对数据进行非规范化,并在每个文档中包含排序键。这涉及典型的存储与速度权衡。