MongoDB — 如何根据匹配字段对查找进行排序?

se_*_*dev 2 mongodb aggregation-framework

在我的 Mongo 数据库中,我有两个集合 \xe2\x80\x94speakersspeeches,并且我可以使用以下代码块“加入”它们(获取演讲者的演讲):

\n\n
// I\'ve already found the \'speaker\' in the database\ndb.collection(\'speakers\').aggregate([{\n    $match: { "uuid": speaker.uuid } },\n    { $lookup: {\n        from: "speeches",\n        localField: "uuid",\n        foreignField: "speaker_id",\n        as: "speeches" } }\n]).toArray();\n
Run Code Online (Sandbox Code Playgroud)\n\n

它工作得很好,但我想按一个date或多个title字段对演讲数组进行排序,但我所做的一切似乎都无法实现。我在这里看到的示例都没有完成我需要它们做的事情。我尝试在块{ $sort: { "speech.title": -1 } }之后添加$lookup,但它什么也没做。这可能吗?

\n

use*_*814 6

您可以使用$lookup3.6 中提供的以下管道变体。

{"$lookup":{
  "from":"speeches",
  "let":{"uuid":"$uuid"},
  "pipeline":[
    {"$match":{"$expr":{"$eq":["$$uuid","$speaker_id"]}}},
    {"$sort":{"title":1}}
  ],
  "as":"speeches"
}}
Run Code Online (Sandbox Code Playgroud)