限制返回的子文档mongodb

时间:2018-05-09 20:07:48

标签: node.js mongodb nested

我们假设我有一个数据集如下

{
"username": "myUsername",
"2018": { //year
        "totalData": 1000
        01: { //month
            "totalData": 30
            01: { //day
                "totalData": 1
                01: { //hour
                    "totalData": 0
                }
                02: {
                    "totalData": 0
                }
                02: {
                    "totalData": 1
                }                   
                //etc

            }
            02: {
                "totalData": 12
                01: { //hour
                    "totalData": 3
                }
                02: {
                    "totalData": 6
                }
                02: {
                    "totalData": 3
                }                   
                //etc                   
            }
            03: {
                "totalData": 6
                01: { //hour
                    "totalData": 4
                }
                02: {
                    "totalData": 1
                }
                02: {
                    "totalData": 1
                }                   
                //etc                   
            }
                //...etc
            31: {
                "totalData": 1
                01: { //hour
                    "totalData": 0
                }
                02: {
                    "totalData": 0
                }
                02: {
                    "totalData": 1
                }                   
                //etc                   
            }
        }
        02: {
            "totalData": 51
            01: {
                "totalData": 17
                01: { //hour
                    "totalData": 5
                }
                02: {
                    "totalData": 5
                }
                02: {
                    "totalData": 7
                }                   
                //etc                   
            }
            02: {
                "totalData": 1
                01: { //hour
                    "totalData": 0
                }
                02: {
                    "totalData": 0
                }
                02: {
                    "totalData": 1
                }                   
                //etc                   
            }
            03: {
                "totalData": 7
                01: { //hour
                    "totalData": 6
                }
                02: {
                    "totalData": 0
                }
                02: {
                    "totalData": 1
                }                   
                //etc                   
            }
                //...etc
            30: {
                "totalData": 5
            }
        }       

    }
}

因此,我按年,按月,按日跟踪数据使用情况,每项使用该年/月/日的总使用量

现在这很好,但是我会进入几个小时。在某些时候分钟,我不想在不需要时返回整个文件。

所以我想做一个以某种方式限制"深度"查询。

所以我想返回一个初始查询,例如,2018年每月使用多少数据。然后在前端,用户如何深入到他们需要的位置,但是因为这可能会变得非常大,每次拉出这个完整的文档似乎是一个巨大的浪费。

例如,是否可以执行查询以仅返回有限的子文档响应或深度

{
2018: {
        "totalData": 1000
        01: {
            "totalData": 30
        }
        02: {
            "totalData": 51
        }
}           

}

1 个答案:

答案 0 :(得分:0)

您可以在嵌入式文档中使用投影,例如官方Mongo文档中提供的示例:

对于你的情况,你可以尝试:

db.collection.find({},{"2018.totalData":1, "2018.01.totalData": 1, "2018.02.totalData":1 })