首页 > 解决方案 > 选择sql查询以按嵌套json分组

问题描述

我从选择查询中得到的数据是这样的

[{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE456',
  products: '[{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"}]',
  falconpay_api_response: null,
  dhl_updated_by: null
}, ... ]

我正在做的是获取orders然后解析products属性并提取product_id和计算 product_id 在不同 json 对象的数量中出现的次数。如果要获取的行数为数千,然后提取 id 并计算其出现次数,这将非常耗时。是否有任何有效的方法来使用GROUP by和直接product_id 获取数千行的出现。

标签: sqlnode.jssql-serverdatabase

解决方案


你可以使用它!

var data = [{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE451',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
},{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE452',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"},{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6K7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
},{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE453',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6K7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
},{
  id: 'CB2FD8B7-7E6D-4BF3-8E73-70D41FFBE454',
  products: [{"product_id":"22061DA1-5D64-475A-B36A-140ECFE8D6B7"}],
  falconpay_api_response: null,
  dhl_updated_by: null
}];
var a =[];
data.forEach(function(order){
    order.products.forEach(function(product){
    if(a[product.product_id] == undefined){
        a[product.product_id] = [];
    }
    a[product.product_id].push(order);
  })
});
console.log(a);

推荐阅读