对于下面的文档架构,我们找到了一种基于数组的排序方法,其中每个项目都有一个带有dueDate的对象并已完成。
{
"_id" : ObjectId("5644c474bfe77aab75c1093a"),
"tasks" : [
{
"completed" : false,
"dueDate" : /(?:)/,
},
{
"dueDate" : ISODate("2015-11-15T05:00:00Z"),
"completed" : true,
},
{
"dueDate" : ISODate("2013-01-01T05:00:00Z"),
"completed" : true,
},
{
"dueDate" : ISODate("2012-01-01T05:00:00Z"),
"completed" : true,
}
]
}
这是我们正在使用的排序功能。
.sort({ "tasks.completed": -1, "tasks.dueDate": 1 })
有些任务没有到期日,为了使排序有效,它要求我们使用new RegExp()
初始化到期日期,以便排序对其进行排序或使其不出现在我们的结果列表中