我只想从每组字段中获取一个元素: 这是我的结果
[{
"_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"]
}
我在没有任何解决方案的情况下搜索了如此多的问题
答案 0 :(得分: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"
}
]