我在 JSON 输入中选择节点,但找不到为我正在查询的每个数组条目包含父对象详细信息的方法。我正在使用 pentaho 数据集成来使用 JSON 输入从 mongodb 输入查询数据。
我也尝试创建一个 mongodb 查询来实现相同的目的,但似乎也无法做到这一点。
以下是显示数据的两个字段/路径:
$.size_break_costs[*].size $.size_break_costs[*].quantity
这是json源格式:
{
"_id" : ObjectId("4f1f74ecde074f383a00000f"),
"colour" : "RAVEN-SMOKE",
"name" : "Authority",
"size_break_costs" : [
{
"quantity" : NumberLong("80"),
"_id" : ObjectId("518ffc0697eee36ff3000002"),
"size" : "S"
},
{
"quantity" : NumberLong("14"),
"_id" : ObjectId("518ffc0697eee36ff3000003"),
"size" : "M"
},
{
"quantity" : NumberLong("55"),
"_id" : ObjectId("518ffc0697eee36ff3000004"),
"size" : "L"
}
],
"sku" : "SK3579"
}
我目前得到以下结果:
S,80
M,14
L,55
我想获取 SKU 和名称以及我的来源将有多个产品(SKU/描述):
SK3579,Authority,S,80
SK3579,Authority,M,14
SK3579,Authority,L,55
当我尝试使用 $.sku 时,我处理错误。
我所追求的最终结果是所有产品及其各种尺寸的可用数量的报告。可能有提供此功能的替代 mongodb 查询。
编辑:
似乎问题可能是由于并非所有行都具有相同的结构。例如,上面包含 3 种尺寸 - S、M、L。有些产品只有一种尺寸 - PACK。其他有多种尺寸 - 28、30、32、33、34、36、38 等。
产生的错误是:
*资源内部的数据结构不一样!我们为 json 路径 [$.sku] 找到了 1 个值,这与路径 [$.size_break_costs[ ].quantity] 的返回值不同(7 个值)。我们必须为所有路径具有相同数量的值。
我已经分别尝试了以下 mongodb 查询,它给出了正确的结果,但是相应的导出不起作用。没有返回大小和数量的值。
询问:
db.product_details.find( {}, {sku: true, "size_break_costs.size": true, "size_break_costs.quantity": true}).pretty();
出口:
mongoexport --db brandscope_production --collection product_details --csv --out Test01.csv --fields sku,"size_break_costs.size","size_break_costs.quantity" --query '{}';