Java MongoDB 3.0-Treiber Abfrage distinct-ohne filter
Wie kann ich die Abfrage verschiedene mit der Java-MongoDB 3.0 Treiber?
Ich bin versucht, Abfrage einzigartige Kategorien Datensätze aus einer Standorten Sammlung in MongoDB. In der Mongo-shell, diese ist sehr einfach: db.locations.distinct("categories");
In Java, es ist nicht das gleiche.
MongoClient client = new MongoClient();
MongoDatabase db = client.getDatabase("yelp");
//this will not compile, although examples from before 3.0 do it this way
MongoCursor<Document> c =
db.getCollection("locations").distinct("categories").iterator();
- Ich konnte nicht
distinct
zu arbeiten (gibt eine leere iterierbar egal was ich mache). Hat diese Arbeit für Sie, wie geschrieben in der akzeptierten Antwort? - Ja, es funktionierte für mich. Siehe meine neue Antwort unten, die Spaziergänge durch alle Schritte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lassen, vermeiden Sie Typumwandlungen für verschiedene, die MongoCollection-API, die Ihnen ermöglicht, die erwarteten Typen der verschiedenen Werte für das Feld. Also, wenn Sie wissen, dass Sie alle Zeichenfolgen, zum Beispiel, können Sie schreiben:
oder alle zahlen:
Können Sie noch tun:
wenn Sie können nicht garantieren, dass alles über die Typen der Werte für das Feld, das Sie Abfragen.
image_files
) mit einem string-Feld namens 'Aspekt'. In der Mongo-shell:db.image_files.distinct('file')
gibt ein array mit den gewünschten Werten. In Java, mit der 3.0-TreiberDistinctIterable<String> i = db.getCollection("image_files").distinct("file", String.class)
Gegenzug eine leere durchsuchbar. Was mache ich falsch?Codec
registriertObject
Klasse. Um dies zu erreichen, versuchen SieBsonValue.class
wie der Rückgabetyp und Griff den Typen, die Sie bereit sind zu handhaben.Werde ich erstellen Sie eine Beispiel-Datenbank in die MongoDB-shell und gehen so weit wie die Bereitstellung einer distinct-Abfrage in Java mit der 3.0-Treiber.
In der shell, erstellen Sie eine Datenbank mit demo-Daten:
In der shell, vielleicht finden wir eindeutige Datensätze.
Wie es mit Java und MongoDB 3.0 Treiber?