Java 在Jaspersoft中使用复杂类型(列表和对象)的正确方法是什么? 请考虑一个MunGDB集合,其内容如下: "_id": "clientsInfo" "data": { "clientsList" : [ { "name" : "Mike", "country" : "USA" }, ... ] }
在设置数据集并像这样定义查询之后Java 在Jaspersoft中使用复杂类型(列表和对象)的正确方法是什么? 请考虑一个MunGDB集合,其内容如下: "_id": "clientsInfo" "data": { "clientsList" : [ { "name" : "Mike", "country" : "USA" }, ... ] },java,jasper-reports,mongodb-query,jaspersoft-studio,Java,Jasper Reports,Mongodb Query,Jaspersoft Studio,在设置数据集并像这样定义查询之后 { collectionName:'projectA', findQuery: { '_id':'clientsInfo', }, findFields: { '_id':0, 'data.clientsList':1 }, } …我能够使用以下表达式在JasperSoft Studio的文本字段中显示获取的数组(java.util.Listtype)的第一项: $F{da
{
collectionName:'projectA',
findQuery: {
'_id':'clientsInfo',
},
findFields: {
'_id':0,
'data.clientsList':1
},
}
…我能够使用以下表达式在JasperSoft Studio的文本字段中显示获取的数组(java.util.List
type)的第一项:
$F{data.clientsList}.get(0)
但是,考虑到我想在名称/国家表中展示整个数据
问题1:我如何访问任何字典字段?正在尝试获取类型对象的方法get(String)未定义。错误。但是,如果知道对象是com.mongodb.BasicDBObject
的实例,则应该继承该方法(请参阅)
我还尝试将对象强制转换为org.json.JSONObject
,但随后得到net.sf.jasperreports.engine.fill.jrepressionevalexception:Error评估源文本的表达式:(JSONObject)$F{data.clientsList}.get(0)
Error
问题2:假设我们已经解决了第一个问题。。。如何迭代列表以根据数组长度不仅访问第一项,而且访问所有项?是否可以在JasperSoft表达式编辑器中使用for循环语句?()
提前谢谢,任何能给我指明正确方向的线索都将不胜感激。如果有人和我处于同样的情况,我必须说整个方法都是错误的 它不是简单的查询,返回一大块复杂数据,格式化为对象或对象列表,然后使用JasperSoft Studio对其进行操作。相反,我要做的是设计一个更复杂的查询,它返回我想直接使用的简单字段。如何做到这一点?通过使用聚合框架 所以,通过改变这个
{
collectionName:'projectA',
findQuery: {
'_id':'clientsInfo',
},
findFields: {
'_id':0,
'data.clientsList':1
},
}
…为了这个
{
runCommand: {
aggregate : 'projectA',
pipeline : [
{'$match': {'_id':'clientsInfo'}},
{'$project': {'data.clientsList': 1}},
{'$unwind': '$data'},
{'$unwind': '$data.clientsList'}
]
}
}
…这就是我如何获得
名称
和国家
字段,以便在文本字段、表格等中使用它们。如果有人与我处于相同的情况,我必须说整个方法是错误的
它不是简单的查询,返回一大块复杂数据,格式化为对象或对象列表,然后使用JasperSoft Studio对其进行操作。相反,我要做的是设计一个更复杂的查询,它返回我想直接使用的简单字段。如何做到这一点?通过使用聚合框架
所以,通过改变这个
{
collectionName:'projectA',
findQuery: {
'_id':'clientsInfo',
},
findFields: {
'_id':0,
'data.clientsList':1
},
}
…为了这个
{
runCommand: {
aggregate : 'projectA',
pipeline : [
{'$match': {'_id':'clientsInfo'}},
{'$project': {'data.clientsList': 1}},
{'$unwind': '$data'},
{'$unwind': '$data.clientsList'}
]
}
}
…是我获取
name
和country
字段的方式,以便在文本字段、表格中使用它们,…等等。是否可以使用for循环语句
-JasperReports中的for循环语句是什么?一些表达式,允许我定义一个自增量变量,以从头到尾访问数组项,如get(i)
是否可以使用for循环语句
-JasperReports中的for循环语句是什么?一些表达式允许我定义一个自增量变量来从头到尾访问数组项,如get(i)
。