我在mongodb上的聚合管道就像。
db.assets.aggregate([{"$match":{"$or":[{"albums":{"$elemMatch":{"id":"78c72b85944e5085a4a3be77a2d175fe","order":{"$gt":"C2"}}}},{"albums":{"$elemMatch":{"id":"18f292072b7555965e0f61a0331a3a43","order":{"$gt":"C2"}}}}]}}
,{"$unwind":"$albums"},
{"$sort":{"albums.order":1,"created":1}},
{"$group":{"_id":"$albums.id","assets":{"$push":"$$ROOT"}}},
{"$project":{"assets":{"$slice":["$assets",6]}}}])
我的资产收集带有类似的条目。
{
"_id": "8ed6dc473e331d895ecbdea7f9bbd55e",
"created": 1479463428837247,
"updated": 1479463428837247,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "D1"
}
},
{
"_id": "aec701d23dfe5f3a100d678e1a04f716",
"created": 1479463428902155,
"updated": 1479463428902155,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "D2"
}
},
{
"_id": "b2fe8f9dcf8f3f92f6396cfa574ef71c",
"created": 1479463428971650,
"updated": 1479463428971650,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "E1"
}
},
{
"_id": "050b550fb23bf780f93eec43cbc667f1",
"created": 1479463428065297,
"updated": 1479463428065297,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "78c72b85944e5085a4a3be77a2d175fe",
"order": "D1"
}
},
{
"_id": "dc54279bc0318f41808b65d1fe7142b2",
"created": 1479463428134560,
"updated": 1479463428134560,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "78c72b85944e5085a4a3be77a2d175fe",
"order": "D2"
}
}
我返回的结果是。
[
{
'_id': '18f292072b7555965e0f61a0331a3a43',
assets: [
{
"_id": "8ed6dc473e331d895ecbdea7f9bbd55e",
"created": 1479463428837247,
"updated": 1479463428837247,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "D1"
}
},
{
"_id": "aec701d23dfe5f3a100d678e1a04f716",
"created": 1479463428902155,
"updated": 1479463428902155,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "D2"
}
},
{
"_id": "b2fe8f9dcf8f3f92f6396cfa574ef71c",
"created": 1479463428971650,
"updated": 1479463428971650,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "18f292072b7555965e0f61a0331a3a43",
"order": "E1"
}
}
],
{
"_id": "78c72b85944e5085a4a3be77a2d175fe",
"assets": [
{
"_id": "050b550fb23bf780f93eec43cbc667f1",
"created": 1479463428065297,
"updated": 1479463428065297,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "78c72b85944e5085a4a3be77a2d175fe",
"order": "D1"
}
},
{
"_id": "dc54279bc0318f41808b65d1fe7142b2",
"created": 1479463428134560,
"updated": 1479463428134560,
"catalog_id": "4b5ce056175151e3f0aa1741eedb7f12",
"albums": {
"id": "78c72b85944e5085a4a3be77a2d175fe",
"order": "D2"
}
}
]
}
]
结果与与OR的匹配查询中传递的专辑相同。78C72B8594EE5085A4A3BE77A2D175FE在18F292072B7555965E0F61A0331A3A43之后出现。理想情况下,它应该以相同的顺序传递给查询。任何想法
我知道这真的很晚,但是我发现它自己查找了,并经历了大约25个堆栈溢出问题,所以我想我会发布。这是我所做的(它是一个聊天室
Group.find({ name: { $regex : new RegExp(name, "i") } })
.skip(pageOptions.page*pageOptions.limit)
.limit(pageOptions.limit)
.sort( '-createdAt' )
.populate("sender")
.exec((err, result) => {
result.reverse();
callback(err, result);
});
关键是:
result.reverse();
希望这可以帮助某人。