我有一个 MondoDB 集合'引用'与lineItems'列表'..如下所示......
db.quotes.find();
> { "_id" : "51d31c4a0364a1b7f7cf45f7",
"accountName" : "NewAccountName",
"className" : "com.db.model.Quote",
"cost" : "0",
"lineItems" : [ { "lineNo" : 1, "product" : { "sku" : "MW216", "description" : "JBoss EAP", "cost" : "1043.5" }, "quotePrice" : "1230", "quantity" : 4 },
{ "lineNo" : 2, "product" : { "sku" : "MW217", "description" : "JBoss EDS, "cost" : "15178.18"}, "quotePrice" : "0", "quantity" : 3} ],
"quoteNumber" : "22005",
"shipping" : "GROUND"
}
我正在使用 MongoDB 查询,如图所示..
{
'collectionName' : 'quotes',
'findQuery' : {
$where : "this.quoteNumber == $P!{QuoteNo}"
}}
我想将每个lineItem显示为一行。
lineNo | sku | Description
1 | MW216 | JBoss EAP
2 | MW217 | JBoss EDS
如何使用 iReport Designer在 JasperReports 中进行设计?
目前,当使用Report Inspector中的'lineItems'字段并将其放在Report中时,会将List中的所有内容显示为一个对象。我正在尝试读取列表中的每个字段,并在lineItems的报告分组中显示它,如上所示。
任何帮助或线索都将不胜感激,感谢您抽出时间帮助我。
答案 0 :(得分:1)
首先你绝对不应该使用$ where - 而不是$where : "this.quoteNumber == $P!{QuoteNo}"
你应该只使用db.quotes.find({quoteNumber:YOURQUOTENO})
这将在服务器上执行正常的MongoDB查询,而不是生成一个Javascript shell来执行{{ 1}}陈述。
如果您希望将每个订单项分开,则需要使用聚合框架$where
,如下所示:
$unwind
这将为每个lineItem返回一个文档,因此如果你有五个文档,每个文档在数组中有三个lineItem,你将获得15个文档。