0

我在 Mongo DB 中有以下文档,我编写了一个 java 代码来从最里面的元素获取数据。出于某种原因,它没有给我任何结果。

输入数据

{
"_id": "59036b0fa036cc28c8e07db6",
"srcName":"test1",
"sections": [{
    "_id": "8769669696",
    "data": [{
            "srcKey": "Bonds",
            "rowIdx": 0,
            "values": [{
                    "srcDesc": "Assets",
                    "valuesNumber": 10000
                },
                {
                    "srcDesc": "NonAssets",
                    "valuesNumber": 75500
                },
                {
                    "srcDesc": "liabilities",
                    "valuesNumber": 1566
                }
            ]
        },
        {
            "srcKey": "01",
            "rowIdx": 1,
            "values": [{
                "srcDesc": "NonAssets",
                "valuesNumber": 1566
            }]
        }
    ]
}]
}

我想要的结果是 select valuesNumber from... where srcName="test1" AND srcKey="Bonds" AND srcDesc="Assets"

Java代码如下

 AggregationOperation match=Aggregation.match(Criteria.where("srcName").in("test1")
            .and("sections.data.values.srcDesc").in("Assets")
            .and("sections.data.srcKey").in("Bonds"));


    AggregationOperation unwind1=Aggregation.unwind("sections");
    AggregationOperation unwind2=Aggregation.unwind("sections.data");
    AggregationOperation unwind3=Aggregation.unwind("sections.data.values");

    Aggregation aggregation=Aggregation.newAggregation(match,unwind1,unwind2,unwind3,match);

    BasicDBObject basicDBObject=mongoTemplate.aggregate(aggregation,"InsStatData",BasicDBObject.class).getUniqueMappedResult();
4

1 回答 1

0

它解决了我的问题。我只需要进行适当的映射即可获得映射结果。原始代码中没有。– user3516787 刚刚编辑

于 2017-05-10T15:38:49.510 回答