猫鼬聚合按字段排序一个数组
Posted
技术标签:
【中文标题】猫鼬聚合按字段排序一个数组【英文标题】: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"]
我搜索了很多关于这个问题没有任何解决方案
【问题讨论】:
【参考方案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"
]
【讨论】:
以上是关于猫鼬聚合按字段排序一个数组的主要内容,如果未能解决你的问题,请参考以下文章