Ich brauche Hilfe bei der Verwendung von elemMatch im Frühjahr Daten, um Daten in Mongodb abzufragen und Ergebnisse von Mongodb abrufen.Wie elemMatch im Frühjahr Daten für verschachtelte Objekte verwenden, um Daten von Mongodb zu erhalten
Ich will Ergebnisse abrufen für einen bestimmten TESTRUN sagen TESTRUN = 1
Ich habe die folgenden Daten in mongodb:
[ {
"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"
}
]
In Mongo Konsole verwendete ich den folgenden Befehl ein und bekam die Ergebnisse:
db.test.find({"testRuns.testRun":1},{"testRuns":{"$elemMatch":{"testRun":1}}}).pretty()
Ich habe die Ergebnisse für meine Anforderung in Mongo-Konsole.
Die eigentliche Frage kommt hier, ich habe Spring-Daten verwendet, um die Ergebnisse in meinem Java-Code abzurufen.
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);
Allerdings kann ich die Ergebnisse für einen bestimmten Testlauf nicht abrufen. Kann mir bitte jemand helfen, dieses Problem zu lösen?
Vielen Dank.
Hallo @ Notionquest. Tatsächlich habe ich viele no.of Aufzeichnungen die gleiche wie die von mir in meinem Beitrag in einer einzigen Sammlung zur Verfügung gestellt. Ich habe versucht, die Abfrage, die Sie zur Verfügung gestellt und die Abfrage, die ich zur Verfügung gestellt, beide ruft alle Datensätze in der Sammlung und nicht die spezifischen Datensätze, die meine Anforderungen entsprechen. Können Sie mir eine Abfrage stellen, um Datensätze für einen beliebigen TestRun-Wert wie 1 oder 2 oder eine beliebige Zahl abzurufen. – harish
@harish, Nur um es klar zu machen, behält die Abfrage das gesamte Dokument, das testRun = 1 hat (d. H. Selbst wenn eines der Array-Elemente diese Bedingung erfüllt). Wenn Sie weiter filtern möchten, müssen Sie möglicherweise zusätzliche Felder in die Filterbedingung aufnehmen, vorzugsweise eines der Felder der obersten Ebene, wie testMethod, Build usw. – notionquest
Ok @notionquest. Vielen Dank für Ihre Antwort. Ich habe deine Antwort genehmigt :) – harish