gpt4 book ai didi

node.js - MongoDB 聚合和组嵌套字段

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:49 24 4
gpt4 key购买 nike

我使用 mongoose 得到了 mongoDB 的结果,如下所示:

{ 
"_id" : { "$oid" : "589f926267d836193b0773fd"} ,
"id" : "3" ,
"update_date" : "2017-02-11" ,

"data":
[{
"groupx" : 3 ,
"speed" : 40 ,
"lon" : "-6.242747" ,
"lat" : "34.821839" ,
"update_timestamp" : "1486852706749" ,
"date" : { "$date" : 1486852706749}
} ,
{
"groupx" : 3 ,
"speed" : 120 ,
"lon" : "-6.7515" ,
"lat" : "33.96547" ,
"update_timestamp" : "1486852718771" ,
"date" : { "$date" : 1486852714771}
} ,
{
"groupx" : 4 ,
"speed" : 100 ,
"lon" : "-6.9515" ,
"lat" : "33.958047" ,
"update_timestamp" : "1486852714771" ,
"date" : { "$date" : 1486852714771}
} ,
{
"groupx" : 4 ,
"speed" : 80 ,
"lon" : "-6.92915" ,
"lat" : "33.928047" ,
"update_timestamp" : "1486852980615" ,
"date" : { "$date" : 1486852980615
}
}]
}

我想按“groupx”对对象进行分组,并获取每个 groupx 的平均速度和总时间。

我使用这样的聚合:

myModel.aggregate([
{ $match: {$and: rules } },
{
$project: {
_id: 0,
groupA: '$data.groupx',
speedA: '$data.speed',
dateA: '$data.date'
}},
{ $group: {
_id: '$groupA',
minDate: { $min: '$dateA'},
maxDate: { $max: '$dateA'},
avg_speed: { $avg: '$speedA'},
}}
]).exec(function ( e, d ) {
console.log( d )
});

请有人帮助完成此查询。

    //Desired result:

{
_id:
group:3
avg_speed:80
time_spent:19223556 //diff between min and max date in group 3

},
{
_id:
group:4
avg_speed:9
time_spent:19223556 //diff between min and max date in group 4

}
...

谢谢你,对我的英语感到抱歉。

最佳答案

我回答我自己:)

这也许可以帮助某人。

...
var id = req.params.id;
var rules = [{'_id' : id}];

{ $match: {$and: rules } },
{ $unwind : "$data" },
{ $project: {
_id: 0,
groupA: '$data.groupx',
speedA: '$data.speed',
dateA: '$data.date'
}},
{ $group: {
_id: '$groupA',
avgSpeedB: { $avg: '$speedA'},
minDate: { $min: '$dateA'},
maxDate: { $max: '$dateA'},
}},
{ $project: {
_id: 1,
debutB: '$minDate',
tempsSpentB: {$subtract: [ '$maxDate','$minDate']},
distanceB: { $multiply: [ '$avgSpeedB',{$subtract: [ '$maxDate','$minDate']}]},
avgSpeedB:1

}}.exec(function ( e, d) {

console.log( d );

});

关于node.js - MongoDB 聚合和组嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com