【发布时间】:2016-12-14 19:34:12
【问题描述】:
我有这些文件,
{
"_id" : 1,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "a"
}
,
{
"_id" : 3,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "b"
}
,
{
"_id" : 5,
"fId" : "test",
"pId" : "test"
"url" : "A",
"subfolder" : "c"
}
,
{
"_id" : 2,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "a"
}
,
{
"_id" : 4,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "b"
}
,
{
"_id" : 7,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "d"
}
,
{
"_id" : 8,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "d"
}
,
{
"_id" : 9,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "e"
}
,
{
"_id" : 10,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "e"
}
,
{
"_id" : 6,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "c"
}
如何编写 mongoose 查询以根据 _id 对这些文档进行排序,按子文件夹分组,并返回最近的 5 个组。
预期结果是
group 1:
[{
"_id" : 10,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "e"
},
{
"_id" : 9,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "e"
}]
,
group 2:
[{
"_id" : 8,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "d"
}
,
{
"_id" : 7,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "d"
}]
,
group 3:
[{
"_id" : 6,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "c"
}
,
{
"_id" : 5,
"fId" : "test",
"pId" : "test"
"url" : "A",
"subfolder" : "c"
}]
,
group 4:
[{
"_id" : 4,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "b"
}
,
{
"_id" : 3,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "b"
}]
,
group 5:
[{
"_id" : 2,
"fId" : "test",
"pId" : "test",
"url" : "B",
"subfolder" : "a"
}
,
{
"_id" : 1,
"fId" : "test",
"pId" : "test",
"url" : "A",
"subfolder" : "a"
}]
我尝试了一个查询
model.aggregate(
[
{$match : {fId : "test" , pId : "test"}},
{$group : {_id : "$subfolder", recording: { $push: "$$ROOT" } }},
{$skip : 5*(pageNumber-1)},
{$sort : {"_id": -1}},
{$limit : 5 }
]
)
我得到随机的5组,不是最近的,结果也不是按照_id排序的。
【问题讨论】:
标签: javascript node.js mongodb mongoose