2017-10-02 3 views
1

Ich möchte benutzerdefinierte Abfrage auf Federdaten mongodb schreiben. Etwas wie folgt aus:Abfrage im Frühjahr Daten Mongo-Repository

public interface CarRepo extends MongoRepository<Car, String> { 


    @Query("select distinct(brand) from Car ") 
    public List<String> findDistinctBrand(); 
} 

Aber es wirft einen Fehler "Caused by: com.mongodb.util.JSONParseException:". Wie kann ich das erreichen?

+0

Sie geben SQL-Abfrage in '@ Query'part. das ist völlig falsch. Und zur eindeutigen Unterstützung von 'mongodb'check [this] (https://docs.mongodb.com/manual/reference/method/db.collection.distinct/) und [this] (https://stackoverflow.com/) Fragen/19203724/distinct-in-spring-data-mongodb) Frage Antworten für spirng Daten Teil – barbakini

+0

Aber in Kriterien, was soll ich für die angegebene Abfrage schreiben (wählen Sie unterschiedliche (Marke) von Car)? –

Antwort

0

Sie verwenden SQL, um in mongodb abzufragen, aber mongodb hat eine eigene Abfragesprache. Sie müssen Abfrage in dieser Sprache schreiben. Da Sie den Befehl distinct verwenden möchten, können Sie keine Query Annotations- oder Federdatenabfrage ausführen, um das zu tun. Sie müssen ein benutzerdefiniertes Repository erstellen und einen eindeutigen Befehl ausführen, indem Sie MongoTemplate verwenden.

2

MongoDB unterstützt keinen eindeutigen Befehl. Es unterstützt nur die Rückgabe eindeutiger Feldwerte mit dem Befehl distinct.

Sie benötigen MongoDB Vorlage zu verwenden, für Ihre Ergebnisse:

DBCollection colllection = mongoTemplate.getCollection("collectionName"); 
Criteria criteria = new Criteria(); 
criteria.where("your column").is("your value"); 
Query query = new Query(); 
query.addCriteria(criteria); 
List list = mongoTemplate.getCollection("collectionName") 
    .distinct("source",query.getQueryObject()); 
+0

** this.mongoTemplate.getCollection ("Car"). Distinct ("Marke") ** Dieses Code-Stück funktioniert für mich. Vielen Dank. –

+0

@yogi Wenn die Feldquelle dbref ist, funktioniert sie in diesem Fall nicht. wie bekomme ich auch das dbref-feld? –

Verwandte Themen