別のネストされたリストのネストされたドキュメントオブジェクトを取得するのが難しいです。同じ問題を解決するのを手伝ってください。次のように私のMongoDBドキュメントは、次のとおりです。ドキュメントの別のネストされたリストのネストされたレコードをフェッチする方法はありますか?
{
"_id" : "PT5",
"departmentId" : "DEPT5",
"subDepartmentList" : [
{
"subDepartmentId" : "SUBDEPT19",
"subDepartmentName" : "X-Ray",
"labServiceList" : [
{
"_id" : "123abc",
"subDepartmentId" : "SUBDEPT19",
"labServiceName" : "serviceOne"
},
{
"_id" : "123def",
"subDepartmentId" : "SUBDEPT19",
"labServiceName" : "hello",
}
]
},
{
"subDepartmentId" : "SUBDEPT21",
"subDepartmentName" : "Haemotology",
"labServiceList" : [
{
"_id" : "456abc",
"subDepartmentId" : "SUBDEPT21",
"labServiceName" : "abcd",
}
]
}
]
}
私はその_id値を使用してlabServiceListの1つのオブジェクトのみを取得したい上記の文書(例から:「_id」:この文書の「123ABC」 )。そして、私は、ネストされた一致するドキュメントとは別のフィールドを取得したくありません。私は、以下のクエリを使用して試してみました:
db.labServiceMasters.aggregate([
{"$project": {
"subDepartmentList": {"$filter": {
"input": '$subDepartmentList.labServiceList',
"as": 'labServiceList',
"cond": {"$eq": ['$$labServiceList._id', '123abc']}
}},
"_id": 0
}}
])
また、私は$マップ演算子を使用して試してみましたが、何も私の方法に行きません。この問題を解決するのを手伝ってください。また、JavaのmongoTemplateを使用して、同じもののクエリを書くのを手伝ってください。どんな提案も認められるでしょう。
多くのありがとうNeil :-)あなたは私の一日を救った...これは私が欲しかったもので、達成するために一日中苦労したものです。あなたの答えでは、私はシェルのクエリを試して、完全に上質です。私はJavaのクエリを試すことができませんでしたし、私は後で同じ小さなを実行しようとするだろうし、私もそれも動作します:-)おかげでもう一度束:-) – Manju
ニール私はJavaのクエリで動作しようとしましたが、コンパイルエラーが発生しているので達成できませんでした。私はすべての方法を試しましたが、何も動作しません。あなたがエラーを追跡することができれば助けてください。 JavaのクエリがmongoTemplateを使用している場合は、Springを使用しているので、私にとってはもっと役立ちます。ありがとうございます:-) – Manju
@ user3418760これは私のIDEのすぐカット&ペーストのコードなので、確かに動作します。あなたが問題を抱えているのなら、それは自分で打ち込んでいるからです。同じコードを「コピー」することをお勧めします。パイプラインを自分で書く方法を理解するまで、このコードを使用してください。また、あなたのプロジェクトでsping-mongodbを最新バージョンに更新したことを確認してください。 –