Извлекать значения из полей в массиве объектов JSON - PullRequest
1 голос
/ 04 июня 2019

У меня есть коллекция в 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)

        });

Iполучить следующий вывод, когда я 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"
        }
    }
  }
]

Массив содержит более 2 объектов, но для целей примера я просто поместил 2 из них.

Все объекты в массиве имеют одинаковую структуру, только значения "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 голосов
/ 04 июня 2019

Ты здесь близко.Попробуйте этот синтаксис.Вместо того, чтобы вложить эти элементы, разделите их следующим образом:

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