【问题标题】:mongoose aggregate sort one array by field猫鼬聚合按字段排序一个数组
【发布时间】:2020-03-13 19:39:54
【问题描述】:

我想从每组字段中只获取一个元素: 这是我的结果

[{
"_id":{"device_id":"9"},
"x":["2019-11-17T18:03:33.000Z","2019-11-17T12:02:35.000Z"],
"y":["93","3"]
},
{
"_id":{"device_id":"8"},
"x":["2019-11-16T12:05:33.000Z","2019-11-16T12:02:35.000Z"],
"y":["33","3"]
}]

我只想获取最后插入的数据,这意味着只有一个来自 x 的值和一个来自 y 的值。 这是代码:

aggregate([
            { "$sort": { "timeStamp": -1 } },
            {
                $group:
                {
                    _id: { device_id: '$device_id' },
                    x: {
                        $push: "$timeStamp"

                    },
                    y: {
                        $push: "$value"
                    },
                    device_name: {
                        $push: "$device_name"
                    },
                }
            }
}]

我已经尝试添加项目exp:

 {
    $project: {
        time: "$x",
        value:"$y",
        integerValues:{
            $map:{
                input: "x",
                as: "integerValue",
                in: { $trunc: "$$integerValue" }
            }
        }
    }
}

这是我期望的结果:

{
    "_id":{"device_id":"8"},
    "x":["2019-11-16T12:05:33.000Z"],
    "y":["33"]
},
{
    "_id":{"device_id":"9"},
    "x":["2019-11-17T18:03:33.000Z"],
    "y":["93"]
}

我搜索了很多关于这个问题没有任何解决方案

【问题讨论】:

    标签: mongodb mongoose mongodb-query aggregate


    【解决方案1】:

    您只需要一个项目阶段

    aggregate([{
      $project: {
        x: {
          $max: "$x"
        },
        y: {
          $max: "$y"
        }
      }
    }])
    

    你得到的结果会是这样的,

    [
      {
        "_id": {
          "device_id": "9"
        },
        "x": "2019-11-17T18:03:33.000Z",
        "y": "93"
      },
      {
        "_id": {
          "device_id": "8"
        },
        "x": "2019-11-16T12:05:33.000Z",
        "y": "33"
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2015-07-27
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多