db.t_verify_stat.aggregate([
{
$match: {
updatedTime: {
$gte: ISODate("2023-02-06 00:44:20.000"),
$lte: ISODate("2023-02-06 01:44:20.000"),
}
}
}
,
{
$group: {
_id: "$operatorId",
"spentArray": {
$push: "$pullSpent"
}
}
}
,
{
$project: {
"operatorId": 1,
"spentArray": 1,
"size": {
$size: ["$spentArray"]
}
}
},
{
$project: {
"operatorId": 1,
"spentArray": 1,
"middleFloat": {
$divide: ["$size", 2]
}
}
},
{
$project: {
"operatorId": 1,
"spentArray": 1,
"truncValue": {
$trunc: ["$middleFloat"]
}
}
},
{
$project: {
"operatorId": 1,
"spentArray": 1,
"middle": {
$add: ["$truncValue", 1]
}
}
},
{
$project: {
"operatorId": 1,
"pullSpent": 1,
"middleValue": {
$arrayElemAt: ["$spentArray", "$middle"]
}
}
}
])
效果图:

该MongoDB聚合查询从t_verify_stat集合中筛选出2023年2月6日00:44:20至01:44:20之间的记录,按operatorId分组,统计每个操作员的spentArray。接着,计算数组长度的中点值,找到对应位置的spent值,输出operatorId和对应的middleValue。
1792

被折叠的 条评论
为什么被折叠?



