2016-02-28 4 views
0

У меня есть коллекция mongodb щелкнутых элементов некоторых магазинов. Если кто-то нажимает на элемент, то дб добавить JSON в этом формате:отображение mongodb приводит к диаграмме google

{ 
"_id" : { "$oid" : "56cf06ce0b7707c83e5a8c64" }, 
"date" : { "$date" : 1456408270811 }, 
"name" : "Jura whisky", 
"store" : "56c9bfed942693bb745229ef" 
} 

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

var id = global.actuallUser._doc._id; 
      id = id.toString(); 
      global.databaseStatistic.collection(global.ARTICLEPRESS).aggregate(
        [ 
         {$match: { 
           $and: [ 
            { 
             store: id, 
             date: { 
              $gte: new Date('12/01/2013'), 
              $lte: new Date('12/01/2017') 
             } 
            } 
           ] 
          }}, 
         {$group: {"_id": {name: "$name", day: {$dayOfMonth: "$date"},month: {$month: "$date"},year: {$year: "$date"}}, "count": {$sum: 1}}} 
        ] 
        ).toArray(function (err, result) { 
       res.send(result); 
      }); 

Теперь, я получаю массив объектов со свойствами Name, день .... Можно чтобы получить этот результат в следующем формате:

['date', 'name', 'count'], 
['1.1.2000', Jura whisky, 400], 
['1.1.2000', Potato, 460], 
['1.1.2000', Pizza, 1120], 
['2.1.2000', Jura whisky, 540] 

Так что я могу сделать диаграмму данных с диаграммой Google API.

Спасибо!

ответ

2

Предполагая, что вы получаете results Объект JSON в результате вызова ajax.

var columns = Object.keys(results[0]); 
var data = results.map(function (result) { 
    var tableRow = []; 
    columns.forEach(function (col) { 
    tableRow.push(result[col]); 
    }); 
    return tableRow; 
}); 

data будет содержать строки таблицы, оказываемые Google Chart.

var dataTable = new google.visualization.DataTable(); 
columns.forEach(function (columnName) { 
    dataTable.addColumn(columnName); 
}); 

dataTable.addRows(data); 
+0

@ laren0815 Помогите решить вашу проблему? – WitVault

+0

спасибо, но теперь я получаю исключение: Ошибка: недопустимый тип, count, для столбца «0». – laren0815

+0

, на какой строке вы получаете эту ошибку? – WitVault

Смежные вопросы