mongodb - 基于mongodb的$lookup中的$sort的结果

标签 mongodb aggregation-framework lookup

我必须根据查找结果对最终结果进行排序。以下是我的聚合查询:

{ $match : {status:'active'},
{ $limit : 10},
{ $lookup:
  {
    from        : "metas",
    localField  : "_id",
    foreignField: "post_id",
    as          : "meta"
  }
}

此查询产生的结果为:

  {
    "_id": "594b6adc2a8c4f294025e46e",
    "title": "Test 1",
    "created_at": "2017-06-22T06:59:40.809Z",
    "meta": [
        {
            "_id": "594b6b072a8c4f294025e46f",
            "post_id": "594b6adc2a8c4f294025e46e",
            "views": 1,
        },
        {
            "_id": "594b6b1c2a8c4f294025e471",
            "post_id": "594b6adc2a8c4f294025e46e",
        }
    ],
},
{
    "_id": "594b6adc2a8c4f29402f465",
    "title": "Test 2",
    "created_at": "2017-06-22T06:59:40.809Z",
    "meta": [
        {
            "_id": "594b6b072a8c4f294025e46f",
            "post_id": "594b6adc2a8c4f29402f465",
            "views": 0,
        },
        {
            "_id": "594b6b1c2a8c4f294025e471",
            "post_id": "594b6adc2a8c4f29402f465",
        }
    ],
},
{
    "_id": "594b6adc2a8c4f29856d442",
    "title": "Test 3",
    "created_at": "2017-06-22T06:59:40.809Z",
    "meta": [
        {
            "_id": "594b6b072a8c4f294025e46f",
            "post_id": "594b6adc2a8c4f29856d442",
            "views": 3,
        },
        {
            "_id": "594b6b1c2a8c4f294025e471",
            "post_id": "594b6adc2a8c4f29856d442",
        }
    ],
}

现在我想要的是根据'meta'下的'views'对这些结果进行排序。类似的结果将按照'meta.views'的降序排列。第一个结果将是元 View =3,然后 View =1,然后 View =0

最佳答案

$unwind 运算符将数组拆分为数组中包含的每个对象的单独文档

例如

db.collection.aggregate(

    // Pipeline
    [


        // Stage 1
        {
            $unwind: {
                path : "$meta"
            }
        },

        // Stage 2
        {
            $sort: {
              'meta.views':-1
            }
        },

    ]


);

关于mongodb - 基于mongodb的$lookup中的$sort的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44759339/

相关文章:

java - Mongo 对 Java 中两个字段的非重复值计数

javascript - MongoDB $or 用于 $match 阶段内的两个字段

python - 找出出现奇数次的字母

sharepoint - 如何创建一个以 Doc Lib 为目标并使用文档的 'Name' 的查找列?

c# - 如何在 C# .Net 中使用 InsertOneAsync 将文档插入到 MongoDB 并返回相同的文档或其 ID

mongodb - 我们可以一起编写 mongodb crud 查询和聚合查询吗?

php - 无法在 Linux (Ubuntu 12.04 LTS) 上安装 MongoDB PHP 驱动程序

c# - MongoDB C# 驱动程序中的部分更新 - 字典问题

node.js - 我如何为多个集合做 Mongodb 聚合过滤器?

python - 从查找表中插入数据