Mein Modell besteht aus einer Sammlung von (CAR-) Modellen mit einer verschachtelten Sammlung von Kraftstofftypen ("Diesel", "Benzin", "Hybrid"). Jeder Kraftstoff verfügt über eine weitere verschachtelte Sammlung von Türen.
{ _id : 'Ford Focus' , fuels : [ {_id : "Diesel" : "doors" : [2 , 3]} , {_id: "Gasoline" , doors : [2, 3, 4, 5] } ] }
< /code>
Wenn ich die für ein bestimmtes Modell und Kraftstofftyp verfügbaren Türen zur Verfügung stellen möchte, kann ich ausführen: < /p>
db.models.find( {"_id" : "Ford Focus" , "fuels._id" : "Diesel"} , { 'fuels' : {$elemMatch: {_id: "Diesel"} } })
< /code>
Wie kann ich das in eine @Query -Methode in einem Spring Data Repository übersetzen? < /p>
@Query(value="{ 'id' : ?0 , 'fuel' : ?1 }")
public Model findDoors(Integer model, String fuel);
< /code>
Die obige Implementierung gibt ein Dokument mit einem verschachtelten Array mit allen Arten von Kraftstoffen zurück, nicht nur der als Parameter übergebene. Wo kann ich die $ Elemmatch -Projektion in ein Spring Data Repository einfügen? Die Mongotemplate und die BasicQuery -Klasse folgen diesem Beitrag < /p>
public Model findDoors(Integer model, String fuel){
Criteria findModelCriteria = Criteria.where("id").is(model);
Criteria findFuelCriteria = Criteria.where("fuels").elemMatch(Criteria.where("id").is(fuel));
BasicQuery basicQuery = new BasicQuery(findModelCriteria.getCriteriaObject(), findFuelCriteria.getCriteriaObject());
return mongoTemplate.findOne(basicQuery, Model.class);
}
< /code>
In diesem Fall erhalte ich eine Ausnahme, wenn der Konstruktor von PropertyPath < /code> aufgerufen wird, da er versucht, auf ein Feld namens $ elemmatch in Model.class zuzugreifen (???) < /p>
Caused by: java.lang.IllegalAccessError
at org.springframework.data.mapping.PropertyReferenceException.detectPotentialMatches(PropertyReferenceException.java:134)
at org.springframework.data.mapping.PropertyReferenceException.(PropertyReferenceException.java:59)
at org.springframework.data.mapping.PropertyPath.(PropertyPath.java:75)
Mein Modell besteht aus einer Sammlung von (CAR-) Modellen mit einer verschachtelten Sammlung von Kraftstofftypen ("Diesel", "Benzin", "Hybrid"). Jeder Kraftstoff verfügt über eine weitere verschachtelte Sammlung von Türen.[code]{ _id : 'Ford Focus' , fuels : [ {_id : "Diesel" : "doors" : [2 , 3]} , {_id: "Gasoline" , doors : [2, 3, 4, 5] } ] } < /code>
Wenn ich die für ein bestimmtes Modell und Kraftstofftyp verfügbaren Türen zur Verfügung stellen möchte, kann ich ausführen: < /p>
Wie kann ich das in eine @Query -Methode in einem Spring Data Repository übersetzen? < /p>
@Query(value="{ 'id' : ?0 , 'fuel' : ?1 }") public Model findDoors(Integer model, String fuel); < /code>
Die obige Implementierung gibt ein Dokument mit einem verschachtelten Array mit allen Arten von Kraftstoffen zurück, nicht nur der als Parameter übergebene. Wo kann ich die $ Elemmatch -Projektion in ein Spring Data Repository einfügen? Die Mongotemplate und die BasicQuery -Klasse folgen diesem Beitrag < /p>
public Model findDoors(Integer model, String fuel){ Criteria findModelCriteria = Criteria.where("id").is(model); Criteria findFuelCriteria = Criteria.where("fuels").elemMatch(Criteria.where("id").is(fuel)); BasicQuery basicQuery = new BasicQuery(findModelCriteria.getCriteriaObject(), findFuelCriteria.getCriteriaObject());
In diesem Fall erhalte ich eine Ausnahme, wenn der Konstruktor von PropertyPath < /code> aufgerufen wird, da er versucht, auf ein Feld namens $ elemmatch in Model.class zuzugreifen (???) < /p>
Caused by: java.lang.IllegalAccessError at org.springframework.data.mapping.PropertyReferenceException.detectPotentialMatches(PropertyReferenceException.java:134) at org.springframework.data.mapping.PropertyReferenceException.(PropertyReferenceException.java:59) at org.springframework.data.mapping.PropertyPath.(PropertyPath.java:75) [/code]
Ich brauche Hilfe bei dieser Frage. Ich habe die folgende Struktur -
[
{
Id : a399f6c6-13b1-4060-8917-e99c54208165 ,
Watchlists : [
{
Id : 0fddfa7a-528d-4fa9-9019-e2f7d7699427 ,
name :...
Ich brauche Hilfe bei dieser Frage. Ich habe die folgende Struktur -
[
{
Id : a399f6c6-13b1-4060-8917-e99c54208165 ,
Watchlists : [
{
Id : 0fddfa7a-528d-4fa9-9019-e2f7d7699427 ,
name :...
Ich verwende die Mongotemplate von Spring Data, um mehrere Dokumente mit einer einzelnen Abfrage zu aktualisieren. Ich muss in der Lage sein, die Anzahl der Dokumente zu begrenzen, die ich pro Anruf...