Mongodb 使用收集数据的流星高度图
我正在尝试使用Meteor的Highchart软件包显示piechart。 我让它与静态数据源一起工作,如下所示:Mongodb 使用收集数据的流星高度图,mongodb,meteor,highcharts,Mongodb,Meteor,Highcharts,我正在尝试使用Meteor的Highchart软件包显示piechart。 我让它与静态数据源一起工作,如下所示: series: [{ type: 'pie', name: 'Sales', data: [ ["Norway", 123123.32], ["Canada", 1977844.86],
series: [{
type: 'pie',
name: 'Sales',
data:
[
["Norway", 123123.32],
["Canada", 1977844.86],
["France", 2644017.71],
["Denmark", 28954612.34],
["United Kingdom", 3391712.21],
["United States", 9389789.51]
]
}]
{ "_id" : "HsgEBrrSvBp6qzp8Q", "0" : "Norway", "1" : 9061000.58 }
{ "_id" : "5dvtddEogj6d5Zw7D", "0" : "Canada", "1" : 1977844.86 }
{ "_id" : "6XmfgjBG4dupes3ma", "0" : "France", "1" : 2644017.71 }
{ "_id" : "BB8Av8GRpPXPsWfzj", "0" : "Denmark", "1" : 2894312.34 }
{ "_id" : "44qbHdtA3wTtf9QFL", "0" : "United Kingdom", "1" : 3391712.21 }
{ "_id" : "YqyWGzXkT4pD532qJ", "0" : "United States", "1" : 9389789.51 }
在模板文件的.js的系列部分中
但是,当我试图使用MongoDb的find语句时,它要么没有显示数据,要么报告显示得很奇怪,我想这是由于find查询产生的数据格式造成的
我收集的数据如下所示:
series: [{
type: 'pie',
name: 'Sales',
data:
[
["Norway", 123123.32],
["Canada", 1977844.86],
["France", 2644017.71],
["Denmark", 28954612.34],
["United Kingdom", 3391712.21],
["United States", 9389789.51]
]
}]
{ "_id" : "HsgEBrrSvBp6qzp8Q", "0" : "Norway", "1" : 9061000.58 }
{ "_id" : "5dvtddEogj6d5Zw7D", "0" : "Canada", "1" : 1977844.86 }
{ "_id" : "6XmfgjBG4dupes3ma", "0" : "France", "1" : 2644017.71 }
{ "_id" : "BB8Av8GRpPXPsWfzj", "0" : "Denmark", "1" : 2894312.34 }
{ "_id" : "44qbHdtA3wTtf9QFL", "0" : "United Kingdom", "1" : 3391712.21 }
{ "_id" : "YqyWGzXkT4pD532qJ", "0" : "United States", "1" : 9389789.51 }
我还尝试只查找所选字段0和1
SalesData.find({}, {_id:0}).fetch()
有没有人知道如何以一种可以在Highcharts中使用的格式从集合中获取数据的技巧
谢谢
编辑:我通过将所需值推送到一个数组并将该数组设置为数据源来解决这个问题
var seriesData = [];
var reportData = SalesData.find({});
reportData.forEach(function(countryData) {
var dataPoint = [countryData.Country, countryData.Total];
seriesData.push(dataPoint);
console.log(countryData.Country);
});
db结果是每行上用大括号括起来的对象的集合。而静态数据是一组值,用大括号括起来。因此,您需要将db中的每一行转换为值数组 以下是映射代码:
var ds = [
{ "_id" : "HsgEBrrSvBp6qzp8Q", "0" : "Norway", "1" : 9061000.58 },
{ "_id" : "5dvtddEogj6d5Zw7D", "0" : "Canada", "1" : 1977844.86 },
{ "_id" : "6XmfgjBG4dupes3ma", "0" : "France", "1" : 2644017.71 },
{ "_id" : "BB8Av8GRpPXPsWfzj", "0" : "Denmark", "1" : 2894312.34 },
{ "_id" : "44qbHdtA3wTtf9QFL", "0" : "United Kingdom", "1" : 3391712.21 },
{ "_id" : "YqyWGzXkT4pD532qJ", "0" : "United States", "1" : 9389789.51 }
];
var asValueArray = ds.map(function(row){
return [row["0"],row["1"]];
});
然后,只需将其指定给序列对象:
series: [{
type: 'pie',
name: 'Sales',
data: asValueArray
}]
db结果是每行上用大括号括起来的对象的集合。而静态数据是一组值,用大括号括起来。因此,您需要将db中的每一行转换为值数组 以下是映射代码:
var ds = [
{ "_id" : "HsgEBrrSvBp6qzp8Q", "0" : "Norway", "1" : 9061000.58 },
{ "_id" : "5dvtddEogj6d5Zw7D", "0" : "Canada", "1" : 1977844.86 },
{ "_id" : "6XmfgjBG4dupes3ma", "0" : "France", "1" : 2644017.71 },
{ "_id" : "BB8Av8GRpPXPsWfzj", "0" : "Denmark", "1" : 2894312.34 },
{ "_id" : "44qbHdtA3wTtf9QFL", "0" : "United Kingdom", "1" : 3391712.21 },
{ "_id" : "YqyWGzXkT4pD532qJ", "0" : "United States", "1" : 9389789.51 }
];
var asValueArray = ds.map(function(row){
return [row["0"],row["1"]];
});
然后,只需将其指定给序列对象:
series: [{
type: 'pie',
name: 'Sales',
data: asValueArray
}]
实际上,您可以使用将查找查询的结果直接转换为值数组 下面是一个使用ECMAScript 2015的场景示例
SalesData.find({}, {fields: {Country: 1, Total: 1}}).fetch().map((countryData) =>
{
{return [countryData.Country, countryData.Total]}
})
您应该能够获得highchart所需的数据源格式。实际上,您可以使用将查找查询的结果直接转换为值数组 下面是一个使用ECMAScript 2015的场景示例
SalesData.find({}, {fields: {Country: 1, Total: 1}}).fetch().map((countryData) =>
{
{return [countryData.Country, countryData.Total]}
})
您应该能够获得highchart所需的数据源格式,Db data实际上有6个字段和3个are列,或者您可以将它们称为0和1,但我怀疑这与我的问题有关。对于我的查询SalesData.find{},{u id:0}.fetch,我试图只选择相关字段,但结果还包括0和1作为列字段,我还没有找到排除这些字段的方法。如果我说的是显而易见的,我很抱歉,但下面是关于如何从文档中提取选定列的链接。您所需要的只是列hanks的名称,但这就是我在这个查询中所做的:SalesData.find{},{u id:0}.fetch我选择排除_id字段,但结果仍然包含列字段0和1。我查看了MongoDB文档,但没有找到任何对我有帮助的东西。但我见过一些例子,其中使用find查询填充Highchart数据字段,因此这应该不是不可能的……如果我正确读取了您的查询,那么您只删除了_id字段。您需要对每个要隐藏的字段执行相同的操作。就像{u id:0,fldName:0}。问题是,我想保留分配给字段0和1的数据,而不是0和1本身。这个查询find{},{u id:0,0:0,1:0}只会为数据库中的每一行返回一个空行。你们明白我的意思了吗?Db数据实际上有6个字段,其中3个是列,或者你们可以称它们为0和1,应该命名为Country和Total,但我怀疑这和我的问题有什么关系。对于我的查询SalesData.find{},{u id:0}.fetch,我试图只选择相关字段,但结果还包括0和1作为列字段,我还没有找到排除这些字段的方法。如果我说的是显而易见的,我很抱歉,但下面是关于如何从文档中提取选定列的链接。您所需要的只是列hanks的名称,但这就是我在这个查询中所做的:SalesData.find{},{u id:0}.fetch我选择排除_id字段,但结果仍然包含列字段0和1。我查看了MongoDB文档,但没有找到任何对我有帮助的东西。但我见过一些例子,其中使用find查询填充Highchart数据字段,因此这应该不是不可能的……如果我正确读取了您的查询,那么您只删除了_id字段。您需要对每个要隐藏的字段执行相同的操作。就像{u id:0,fldName:0}。问题是,我想保留分配给字段0和1的数据,而不是0和1本身。这个查询find{},{u id:0,0:0,1:0}只会为数据库中的每一行返回一个空行。你明白我的意思吗?