0
以下のドキュメントがMOngo DBにあり、最奥の要素からデータを取得するためのJavaコードを書きました。何らかの理由で私にその結果が返ってこない。mondoDBテンプレートを使用したネストされた検索
入力データ
{
"_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
}]
}
]
}]
}
私はsrcNameという= "TEST1" AND srcKey = "絆" AND srcDesc = "資産" が
Javaコードがどこにある から... valuesNumberを選択されたい結果下記のように
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();
あなたは、1つの部分とsection.dataのセクションの下でsrcNameを参照しています。 2人のうちの1人が間違っています。私はあなたがsrcNameだけでなく、sections.srcNameを参照する必要があると思います。 また、values.srcDesc ...を参照しています。あいまいな参照です(3つともsrcDescという名前です)。 このためにSpringデータを使用することをお勧めします。これは、DTOオブジェクトに値を設定し、プレーンなjavaを使用して必要なものを取得するために、これを大幅に複雑にすることはありません。 – Araymer
@Araymer My appologies、srcNameはセクションの外側にあります。その_idフィールドと一緒に。 – Abhinav1singhal
サンプル文書のコードを実行しただけで、10000として 'valuesNumber'を取得しました。あなたのコードは良く見えます。どのように結果を確認していますか? – Veeram