【问题标题】:Mongodb - Aggregate Sorting by Restricted Array ElementsMongodb - 按受限数组元素进行聚合排序
【发布时间】:2020-09-10 00:38:00
【问题描述】:

我有以下文档,在这里我想在限制范围内按字段“ranks.rank”对它们进行排序。

这种排序怎么做? 'ranks.date': { '$gte': 20200516 }

我尝试过类似

{ $match: selector },
{
  $project: {
    views: 1,
    'ranks': {
      $cond: {
        if: { $gte: ["$ranks.date", 20200516] },
        then: "$ranks",
        else: "$$REMOVE"
      }
    },
  }
},
{ $addFields: { totalRank: { $sum: '$ranks.rank' } } },
{ $sort: { 'totalRank': 1 } }

文件

{ 
    "_id" : "Qvpbjpjqexko4XFGH", 
    "views" : NumberInt(15), 
    "ranks" : [
        {
            "date" : NumberInt(20200415), 
            "rank" : NumberInt(1)
        }, 
        {
            "date" : NumberInt(20200418), 
            "rank" : NumberInt(13)
        }, 
        {
            "date" : NumberInt(20200503), 
            "rank" : NumberInt(1)
        }
    ]{ 
    "_id" : "bLQKR39qmJcwuzm8r", 
    "views" : NumberInt(16), 
    "ranks" : [
        {
            "date" : NumberInt(20200415), 
            "rank" : NumberInt(1)
        }, 
        {
            "date" : NumberInt(20200418), 
            "rank" : NumberInt(12)
        }, 
        {
            "date" : NumberInt(20200501), 
            "rank" : NumberInt(2)
        }, 
        {
            "date" : NumberInt(20200521), 
            "rank" : NumberInt(1)
        }
    ]

看起来您的帖子主要是代码;请添加更多详细信息。

【问题讨论】:

    标签: javascript mongodb sorting


    【解决方案1】:

    我想我明白了

            { $match: selector },
    
            {
                $project: {
                    views: 1,
                    ranks: {
                        $filter: {
                            input: "$ranks",
                            as: "rank",
                            cond: { $gte: ["$$rank.date", monAgo] }
                        }
                    },
                },
            },
    
            { $addFields: { totalRank: { $sum: '$ranks.rank' } } },
            { $sort: { 'totalRank': -1 } }
    

    【讨论】:

      猜你喜欢
      • 2015-05-07
      • 2017-03-12
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 2013-01-12
      • 1970-01-01
      • 2019-06-15
      相关资源
      最近更新 更多