如何按 MongoDB 中某个键的特定顺序排序
How to sort in a specific order of a key in MongoDB
美好的一天。我有以下文件。
{
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。我正尝试在服务器中 publish 一个带有 limit 的集合,因为我正在处理一个非常大的数据集。
我正在研究 聚合,我认为这是针对这种情况的正确解决方案,但 Meteor 不支持它。
MongoDb 只支持A -> Z, Z -> A, 0 -> 9, 9 -> 0
在排序参数中指定要排序的一个或多个字段,值 1 或 -1 分别指定升序或降序。
示例:
db.orders.find().sort( { "status": -1 } )
mongodb 聚合框架 是 通过 monbro:mongodb-mapreduce-aggregation 包在服务器端可用(例如)。您可以在您的出版物中使用它。
另一种方法是对数据进行某种程度的非规范化,并在每个文档中包含排序键。这涉及典型的存储与速度权衡。
好吧,我最后附上了一个数字,按以下顺序对文档进行排序:睡觉、喝酒、吃饭,学习
{
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 组,我发现了一些可能有用的东西。 Link .
美好的一天。我有以下文件。
{
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。我正尝试在服务器中 publish 一个带有 limit 的集合,因为我正在处理一个非常大的数据集。
我正在研究 聚合,我认为这是针对这种情况的正确解决方案,但 Meteor 不支持它。
MongoDb 只支持A -> Z, Z -> A, 0 -> 9, 9 -> 0
在排序参数中指定要排序的一个或多个字段,值 1 或 -1 分别指定升序或降序。
示例: db.orders.find().sort( { "status": -1 } )
mongodb 聚合框架 是 通过 monbro:mongodb-mapreduce-aggregation 包在服务器端可用(例如)。您可以在您的出版物中使用它。
另一种方法是对数据进行某种程度的非规范化,并在每个文档中包含排序键。这涉及典型的存储与速度权衡。
好吧,我最后附上了一个数字,按以下顺序对文档进行排序:睡觉、喝酒、吃饭,学习
{
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 组,我发现了一些可能有用的东西。 Link