JasperReports MongoDB查询如何访问子文档?

时间:2015-01-14 12:26:34

标签: mongodb jasper-reports mongodb-query

我们有一个存储在MongoDB中的文档,如下所示:

{
    "id" : 1,
    "name" : "demo-name",
    "lastModified" : ISODate("2015-01-07T07:19:35Z"),
    "snapshot" : {
        "rows" : [
            {
                "quantity" : 100,
                "rate" : 32,
                "description" : "22MM SHROUDED PBA RED",
                "productCatlgNo" : "3MA40 00 AA0"
            },
            {
                "quantity" : 125,
                "rate" : 32,
                "description" : "22MM SHROUDED PBA BLACK",
                "productCatlgNo" : "3MA40 01 AA0"
            }
        ]
    }
}

我正在尝试访问此文档,并使用以下查询仅读取snapshot.rows报告设计器中JasperStudio中存储的数据:

{
    'collectionName' : 'views.abcdefghi',
    'findQuery' : {
        'name': 'demo-name'
    },
    'findFields':{
        'snapshot.rows': 1
    }
}

但是输出只包含snapshot.rows,而我想要rows中存在的文档的内部细节。

我应该怎么做?

1 个答案:

答案 0 :(得分:0)

这可能是您的回答(基于此link

}
   runCommand: 
   {
      aggregate : 'views.abcdefghi',
      pipeline : 
               [ 
                   {$match : {"name" : "demo-name"}},
                   {$project : {"rows" : "$snapshot.rows" }},
               ]
   }
}

在mongo shell中运行命令(在示例文档上)db.test.aggregate([ {$project : {"rows" : "$snapshot.rows"}} ]).result之后我得到了这个结果(只有id和行):

{
    "0" : {
        "_id" : ObjectId("54b9017ec283f0c25c9cbf5e"),
        "rows" : [ 
            {
                "quantity" : 100,
                "rate" : 32,
                "description" : "22MM SHROUDED PBA RED",
                "productCatlgNo" : "3MA40 00 AA0"
            }, 
            {
                "quantity" : 125,
                "rate" : 32,
                "description" : "22MM SHROUDED PBA BLACK",
                "productCatlgNo" : "3MA40 01 AA0"
            }
        ]
    }
}