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

时间:2018-08-16 21:37:21

标签: mongodb aggregation-framework

在我的Mongo数据库中,我有两个集合-speakersspeeches,并且我可以使用以下代码块将它们“加入”(得到演讲者的讲话):

// I've already found the 'speaker' in the database
db.collection('speakers').aggregate([{
    $match: { "uuid": speaker.uuid } },
    { $lookup: {
        from: "speeches",
        localField: "uuid",
        foreignField: "speaker_id",
        as: "speeches" } }
]).toArray();

它运作良好,但是我想按date字段或title字段对语音数组进行排序,但是我似乎没有做任何事情。我在这里看到的所有示例都没有完成我需要他们做的事情。我尝试在{ $sort: { "speech.title": -1 } }块之后添加$lookup,但没有执行任何操作。这有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用以下$lookup管道版本(可从3.6获得)。

{"$lookup":{
  "from":"speeches",
  "let":{"uuid":"$uuid"},
  "pipeline":[
    {"$match":{"$expr":{"$eq":["$$uuid","$speaker_id"]}}},
    {"$sort":{"title":1}}
  ],
  "as":"speeches"
}}