I have below document in Mongo DB and I wrote a java code to get data from innermost element . For some reason its not returning me any results for it.
Input data
{
"_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
}]
}
]
}]
}
The result I want is select valuesNumber from...where srcName="test1" AND srcKey="Bonds" AND srcDesc="Assets"
Java code is as below
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();