mongoDB汇总查询返回结果以相反的顺序结果



我在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();

希望这可以帮助某人。

最新更新