我在birt报告中使用mongo db。我有数据集,其中包含图片中的对象数组。
deviceStatus是一个包含status对象,erroCode,deviceName等子对象的数组。
我想在创建组时在报表中为deviceName创建组,它是以这种形式创建的:
[ "CardReader" , "CashAcceptor" , "CashDispenser" , "ChequeAcceptor" , "EmiratesIdScanner" , "PinPad" , "JournalPrinter" , "ReceiptPrinter" , "StatementPrinter" , "SignpadScanner"]
我希望它以破碎的形式分组,如:
CardReader
CashAcceptor
CashDispenser ..
errorCode也是从数据集中以这种形式出现的:
[ "97080301" , "97080302,97080303" , "" , "" , "" , "" , "" , "" , "" , ""]
以同样的方式,我想将错误代码和状态代码从数组形式分解为每个deviceName的每一行。
CardReader 97080301
CashAcceptor 97080302,97080303
CashDispenser
我是新来的,请有人帮忙。提前致谢。
在应用Veeram的答案之后,errorCode没有显示在报告中,但它在预览结果中显示:
2 :
请按照以下步骤获得所需的回复。
数据:
db.devicestatus.insert([
{
"_id": "0001",
"className":"store",
"deviceStatus": [ {
"deviceName": "CardReader",
"errorCode": "97080301",
"status": "Bad"
},
{
"deviceName": "CashAcceptor",
"errorCode": "97080302,97080303",
"status": "Bad"
},
{
"deviceName": "CashDispenser",
"errorCode": "",
"status": "Good"
}]
}
])
1.Data Explorer - 转到数据集 - 新数据集 - 选择数据源 - 输入数据集名称 - 单击下一步
2.Input collection name - devicestatus - 列出所有字段 - 从命令类型下拉列表中选择Aggregate选项 - 单击Expression
3.在表达式构建器提示中添加以下表达式 - 单击“确定”
下面的表达式$unwind
将数组展平,将devicestatus数组分解为文件,然后用$project
保存所需的字段。
[
{"$unwind":"$deviceStatus"},
{"$project":{
"_id":0,
"className":1,
"deviceStatus.deviceName":1,
"deviceStatus.errorCode":1
}
}
]
要么
下面的表达式遍历devicestatus数组和$map
和$project
所需的字段,然后是$unwind
以展平以将数组分解为文档。
[{
"$project":{
"_id":0,
"className":1,
"deviceStatus":{
"$map":{
"input":"$deviceStatus",
"as":"result",
"in":{
"deviceName":"$$result.deviceName",
"errorCode":"$$result.errorCode"
}
}
}
}
},
{"$unwind":"$deviceStatus"}
]
要么
4.确认刷新 - 单击是
5.将所有可用字段移动到所选的多选项下拉框 - 单击“完成”
6.预览结果
{"className":"store", "deviceStatus":{"deviceName":"CardReader","errorCode":"97080301"}}
{"className":"store", "deviceStatus":{ "deviceName":"CashAcceptor","errorCode":"97080302,97080303"}}
{"className":"store","deviceStatus":{"deviceName":"CashDispenser","errorCode":""}}