簡體   English   中英

從JSON對象數組中的字段中提取值

[英]Extract values from fields in an array of JSON objects

我在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

顯然我的語法不正確,但是我不知道問題出在哪里。
訪問數組並獲取所需值的確切語法是什么?

非常感謝每個能對此有所啟發的人。

你在這附近 試試這個語法。 與其嵌套這些項目,不如將它們分開:

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']); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM