Spring Data "Mongo" Benutzerdefinierte Repository-Abfrage mit ObjectID
Habe ich ein mongo-Abfrage, die ich umsetzen will, wie eine Feder Mongo-Repository
db.collection.find({ 'items':
{ $elemMatch: {
'refund.$id' : ObjectId('5638cab2e4b07ff212618d7e')
}
}
})
Meine Repository-Schnittstelle ist
@Query("{ 'items': { $elemMatch: { 'refund.$id' : ObjectId(?0) } } }")
RMA findRMAByItemRefund(String refundId);
Wirft es JSONParseException
Caused by: com.mongodb.util.JSONParseException:
{ 'items': { $elemMatch: { 'refund.$id' : ObjectId("_param_0") } } }
^
at com.mongodb.util.JSONParser.parse(JSON.java:216)
- Sind Sie versuchen, binden Sie die parameter
refundId
um die Abfrage-parameterrefund.$id
? Wennrefund
ist eine andere Entität, die Sie versuchen könnenrefund.id
seit dem Frühjahr hat die id konvertieren Zeug von selbst - Ja. Es funktioniert @JoaoEvangelista Frühjahr Griffen die konvertieren. Ich danke Ihnen sehr
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese
Aus meiner Erfahrung
?0
soll standalone und nicht als "mongo" - Funktion parameter.Außerdem ist
$id
eigene Annahme oder das Feld gespeichert als$id
. Wenn nicht, werde ich gehen mitrefund.id
Als die akzeptierte Lösung gefunden hatte, brachte keine Ergebnisse in meinem Fall, musste ich eine andere Lösung finden, das war:
Anstatt der automatisch generierten query-Funktionalität definiert, die über
@Query(...)
ich entschied mich für den manuellen Aufbau derDBObject
Abfrage mongo, und die Definition der Funktionalität alsdefault
Implementierung in das interface, damit es "sauber" ist(
"
- da hatte die Einführung einer_query
Methode)Hinweis: Diese Lösung funktioniert nur in Java 1.8+
Ich vermute, mein problem war ein wenig anders, aber da konnte ich keine Antwort finden überall, ich glaube, es ist erwähnenswert.
Im Grunde wollte ich die Suche nach der ObjectId UND userId, also hier ist was ich getan habe:
Dies ist das Beispiel-Objekt auf
mongo
Dokument:Können Sie die repository-Methode für die Suche
report.id
nur mitObjectId
Daten geben, ich habe versucht, mit nur string und es kann nicht funktionieren, hier sind meine repository-Methode:für die Erstellung
ObjectId
kann man es mit: