mongodb mongoTemplate bekommen, distinct Feld mit einigen Kriterien
Meine MongoDB json-Struktur ist
{
"_id" : "122134231234234",
"name" : "Total_pop",
"description" : "sales category",
"source" : "public",
"dataset" :"d1"
},
{
"_id" : "1123421231234234",
"name" : "Total_pop",
"description" : "sales category",
"source" : "public",
"dataset" :"d1"
},
{
"_id" : "12312342332423343",
"name" : "Total_pop",
"description" : "sales category",
"source" : "private",
"description" : "d1"
}
Ich brauche, um die Sammlung verschiedene dataset-wo die Quelle ist öffentlich.
Ich habe versucht, diese Abfrage, und es hat nicht funktioniert:
Criteria criteria = new Criteria();
criteria.where("source").in("public");
query.addCriteria(criteria);
query.fields().include("name");
query.fields().include("description");
query.fields().include("description");
query.fields().include("source"); List list =
mongoTemplate.getCollection("collectionname").distinct("source", query);
Können Sie bitte mir helfen?
- "; Liste Liste =" ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für eine Sache, die
.getCollection()
Methode gibt die basic-Treiber-Auflistung-Objekt etwa so:So der Typ von query-Objekt kann unterschiedlich sein von dem, was Sie verwenden, aber es gibt auch einige andere Dinge. Nämlich, dass
.distinct()
gibt nur die "distint" Werte der Schlüssel, den Sie angefordert haben, und doe nicht zurück anderen Bereichen des Dokuments. So konnte man tun:Aber das ist nur wieder "Probe" als ein element in der Liste zum Beispiel.
Wenn Sie wollen, dass die "Felder" aus einem Satz, dann verwenden Sie die
.aggregate()
- Methode statt. Mit der "ersten" auftreten von den anderen Feldwerte für verschiedene Schlüssel:Oder die eigentliche "distinct" - Werte mehrerer Felder, indem Sie Sie der Gruppierung Schlüssel:
Gibt es auch eine direkte
.aggregate()
Methode auf mongoTemplate Instanzen bereits, das eine Reihe von helper-Methoden zu bauen pipelines. Dies sollte sich aber zeigen Sie in die richtige Richtung, mindestens.mongoTemplate.getCollection("collectionName") .distinct("source",query.getQueryObject());
Ab Frühjahr Daten Mongo 2.2.0 MongoTemplate bietet eine Funktion zum abrufen der eindeutigen Feld mit Kriterien,
Was im Grunde findet alle verschiedenen Städte-Adresse-Sammlung, wo Land ist.