猫鼬聚合按字段排序一个数组

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

[{
"_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"]
}

我在没有任何解决方案的情况下搜索了如此多的问题

change124864 回答:猫鼬聚合按字段排序一个数组

您需要的只是一个项目阶段

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"
  }
]
本文链接:https://www.f2er.com/3081147.html

大家都在问