我们假设我有一个数据集如下
{
"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
}
}
}
答案 0 :(得分:0)
您可以在嵌入式文档中使用投影,例如官方Mongo文档中提供的示例:
对于你的情况,你可以尝试:
db.collection.find({},{"2018.totalData":1, "2018.01.totalData": 1, "2018.02.totalData":1 })