mongodbのデータを照会し、mongodbから結果を取得するためにspringデータでelemMatchを使用するには、何か助けが必要です。私は特定のtestRunの結果を取得したいネストしたオブジェクトのスプリングデータにelemMatchを使用してmongodbからデータを取得する方法
は、私はMongoDBの中に、以下のデータを持っているtestRun = 1
言う:モンゴコンソールで
[ {
"testMethod": "initialization",
"testCase": "com.harish.test.TestNGRest.OrganisationGetTest",
"build": 1,
"ranNumberofTimes": 2,
"failed": 0,
"success": 2,
"testRuns": [
{
"testMethod": "initialization",
"testCase": "com.harish.test.TestNGRest.OrganisationGetTest",
"branchName": "branch_1",
"testRun": 1,
"success": 1,
"fail": 0,
"timetorun": 0,
"cases": [
{
"caseId": 1,
"status": "success",
"failreason": null,
"startDate": "Fri May 27 14:41:22 EDT 2016",
"endDate": "Fri May 27 14:41:22 EDT 2016"
}
],
"startDate": "Fri May 27 14:41:22 EDT 2016",
"endDate": "Fri May 27 14:41:22 EDT 2016"
},
{
"testMethod": "initialization",
"testCase": "com.harish.test.TestNGRest.OrganisationGetTest",
"branchName": "branch_1",
"testRun": 2,
"success": 1,
"fail": 0,
"timetorun": 1,
"cases": [
{
"caseId": 1,
"status": "success",
"failreason": null,
"startDate": "Fri May 27 14:41:49 EDT 2016",
"endDate": "Fri May 27 14:41:49 EDT 2016"
}
],
"startDate": "Fri May 27 14:41:49 EDT 2016",
"endDate": "Fri May 27 14:41:49 EDT 2016"
}
]
私は、次のコマンドを使用して結果を得た:
db.test.find({"testRuns.testRun":1},{"testRuns":{"$elemMatch":{"testRun":1}}}).pretty()
私はmongoコンソールで自分の要件の結果を得ました。
実際の質問はここにあります。私はJavaコードで結果を取得するために春のデータを使用しました。
return mongoTemplate.find(BasicQuery.query(Criteria.where("testRuns.testRun").is(testRun).andOperator(Criteria.where("testRuns").elemMatch(Criteria.where("testRun").is(testRun)))),Test.class, COLLECTION_NAME);
ただし、特定のテスト実行の結果を取得できません。誰かがこの問題を解決するのを助けてくれますか?
ありがとうございます。
こんにちは@notionquest。実際には、私は1つのコレクションで私のポストで提供したものと同じ多くのレコードを持っています。あなたが提供したクエリと私が提供したクエリを試しましたが、両方とも自分の必要条件に一致する特定のレコードではなくコレクション内のすべてのレコードを取得します。 1または2または任意の数値のような任意のtestRun値のレコードを取得するためのクエリを私に提供できますか? – harish
@harish、これを明確にするために、クエリはtestRun = 1(つまり、この条件に一致する配列要素の1つ)のドキュメント全体を保持します。さらにフィルタリングしたい場合は、フィルタ条件にtestMethod、ビルドなどの最上位フィールドの1つを追加する必要があります。 – notionquest
Ok @notionquest。お返事をありがとうございます。私はあなたの答えを承認しました:) – harish