我可以在json数据上使用javascript进行复杂的SQL样式查询吗?

时间:2014-04-17 15:39:56

标签: javascript jquery sql json

我遇到了一个问题,我需要以某种方式操纵json结果 我可以用sql命令类型来操作它。

喜欢左连接和总和和分组

因此你们中的任何人最近都遇到过这种情况?

我目前正在使用/探索jsonsql javascript ..暂时enter image description here

attach是我需要操作的json文件..

新结果应该是这样的

enter image description here

所以我猜我需要使用左连接才能产生这种输出。

我的问题就是收集行中的所有/部分内容并将其作为列 然后将所有这些放在一起......

我希望我有道理..感谢您的所有回复......

1 个答案:

答案 0 :(得分:3)

该语言为您提供了一些不错的功能,因此不需要在JS上包装SQL:

var data=[{"firstName":"Alice", "age":"16"},{"firstName":"Bob", "age":"18"} ... {"firstName":"Zacharias", "age":"37"}]

如果你想要SELECT * FROM json WHERE age>16,你可以在JS中做同样的事情:

data.filter(function(x){ return x.age>16 })

如果你想SELECT count(*) FROM json,你只需要写

data.length;

如果你想SELECT avg(age) FROM json,你可以写

data.reduce(function(o,n){ return o+(n.age/data.length) }, 0)

如果你想SELECT sum(age) from json,你可以写

data.reduce(function(o,n){ return o+n.age*1 },0) 

那么为什么不使用,语言给你什么?

编辑:我看到了,你指定了你的需求。究竟需要什么转型?我认为应该有一种JS方式,做什么,你想要什么。

Edit2:对于表格表示,您必须对所有数据执行reduce。对于这个例子,我简化了一点:

var aaData=[{"country":"USA", "month":"1", "earnings":"1000"}, {"country":"USA", "month":"2", "earnings":"1001"},     {"country":"USA", "month":"3", "earnings":"1002"}, {"country":"Germany", "month":"1", "earnings":"1000"},     {"country":"Germany", "month":"2", "earnings":"1001"}, {"country":"Germany", "month":"3", "earnings":"1002"}]

var result=aaData.reduce(function(o, n){
    if (!o.hasOwnProperty(n.country)) o[n.country]={};
    o[n.country][n.month]=n.earnings;
    return o;
}, {})

以下是JSFiddle