首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mongoose聚合:当我使用replaceRoot时,无法显示witch I组上的参数

Mongoose聚合:当我使用replaceRoot时,无法显示witch I组上的参数
EN

Stack Overflow用户
提问于 2019-09-17 14:02:10
回答 1查看 42关注 0票数 0

我在Schema中有一个包含以下内容的数据集:

代码语言:javascript
复制
Schema({
    'ID': {type:Number},
    'Date': {type:Date},
    'DrivingHours':{type:Number}
})

我喜欢通过将以下结果组合在一起来聚集:

代码语言:javascript
复制
[
    {
        "DrivingHours": [
            {
                "9": 2.6061111111111113,
                "36": 0,
                "54": 0.016944444444444446,
                "Date": "2019-9-1"
            },
            {
                "9": 0.5738888888888889,
                "36": 0,
                "54": 0,
                "Date": "2019-9-2"
            },
           ...

因为钥匙是我的车辆ID。使用下面的管线,我接近了我的目标,但无法集成“日期”。在使用'$replaceRoot‘之后如何添加这个参数有什么窍门吗?

代码语言:javascript
复制
{$facet: {
            DrivingHours: [
                {$group: {_id: {Date: '$Date', ID: '$ID'},
                    ID: {$first: '$ID'},
                    DrivingHours: {$first: '$DrivingHours'}
                }},                    
                {$group: {_id: '$_id.Date',
                    arrDrivingHours: {
                        $push: {'k': { $toString: '$ID' }, 'v':{ $ifNull: [ '$DrivingHours', 0 ] }}
                    }}},
                {'$replaceRoot':{
                    newRoot: {$arrayToObject:'$arrDrivingHours'} 
                    } 
                }
            ]
            }}

我使用facet,因为我喜欢稍后添加数据集的其他方面,但这非常有效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-19 01:59:14

我只需要在"$mergeObjects“中添加Date对象。因此,解决方案是:

代码语言:javascript
复制
{$facet: {
            DrivingHours: [
                {$group: {_id: {Date: '$Date', ID: '$ID'},
                    ID: {$first: '$ID'},
                    DrivingHours: {$first: '$DrivingHours'}
                }},                    
                {$group: {_id: '$_id.Date',
                    arrDrivingHours: {
                        $push: {'k': { $toString: '$ID' }, 'v':{ $ifNull: [ '$DrivingHours', 0 ] }}
                    }}},
                {'$replaceRoot':{
                    newRoot: {"$mergeObjects": [
                        {"Date": "$_id.Date"},
                        {$arrayToObject: "$ObjDrivingHours"}
                        ]
                    } 
                } 
            }
        ]
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57968170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档