从JSON对象数组中的字段中提取值

时间:2019-06-04 16:10:30

标签: javascript arrays json mongodb data-extraction

我在MongoDB中有一个集合,其中包含许多具有相同结构的文档。

当我使用以下代码对集合中的某些过滤器执行查找查询时:

Comment.find(
        {
            "data.time.s": {
                "$gte": "2019-05-13",
                "$lte": "2019-05-27"
            }
        },
        {
            "data.iaqi.co.v": "$data.iaqi.co.v",
            "data.time.s": "$data.time.s",
            "_id": 0

        }, function (error, datos) {

            console.log(datos)

        });

当我console.log(datos)时,得到以下输出:

[
  { 
    "data" : {
        "iaqi" : {
            "co" : {
                "v" : 3.2
            }
        }, 
        "time" : {
            "s" : "2019-05-14 12:00:00"
        }
    }
},
{ 
    "data" : {
        "iaqi" : {
            "co" : {
                "v" : 4.7
            }
        }, 
        "time" : {
            "s" : "2019-05-15 00:00:00"
        }
    }
  }
]

该数组包含两个以上的对象,但出于示例的目的,我只放置了其中两个。

数组中的所有对象都具有相同的结构,只是“ v” “ s” 的值在每个对象上都发生变化。

我只需要从每个对象中提取字段“ v” “ s” 的值,然后将其保存为以下确切格式的CSV文件:

Date,Value
2019-05-14 12:00:00,3.2
2019-05-15 00:00:00,4.7
2019-05-17 05:00:00,1
2019-05-19 20:00:00,2.3
2019-05-28 08:00:00,33.4
2019-05-28 10:00:00,18.8
2019-05-28 12:00:00,11.5
2019-05-28 13:00:00,12.4
2019-05-29 06:00:00,6.4

现在,我正在做一些测试,试图首先通过for循环显示控制台中数组中提到的值(而不是仅显示第一个代码中的console.log(datos)):

for (var i = 0; i < datos.length; i++) {
                console.log(datos[i]['data'['time'['s']]]);
            }

但是我在控制台中得到以下输出:

undefined
undefined

很明显我的语法不正确,但是我不知道问题出在哪里。
访问数组并获取所需值的确切语法是什么?

非常感谢能对此有所启发的每个人。

1 个答案:

答案 0 :(得分:0)

您将在这里关闭。试试这个语法。与其嵌套这些项目,不如将它们分开:

for (var i = 0; i < datos.length; i++) {
  console.log(datos[i]['data']['time']['s']);
}

您还可以使用点符号来查找所需内容:

for (var i = 0; i < datos.length; i++) {
  console.log(datos[i].data.time.s);
}

提琴:https://jsfiddle.net/gn7kyhuz/

var datos = [
  { 
    "data" : {
        "iaqi" : {
            "co" : {
                "v" : 3.2
            }
        }, 
        "time" : {
            "s" : "2019-05-14 12:00:00"
        }
    }
},
{ 
    "data" : {
        "iaqi" : {
            "co" : {
                "v" : 4.7
            }
        }, 
        "time" : {
            "s" : "2019-05-15 00:00:00"
        }
    }
  }
];

for (var i = 0; i < datos.length; i++) {
  console.log(datos[i]['data']['time']['s']);
}