I'll create an example database in the MongoDB shell and go as far as delivering a distinct query in Java with the 3.0 driver.
In the shell, create a database with demo data:
use imagedb;
db.createCollection("image_files");
db.image_files.insert({ file: "1.jpg", aspect: "4:3" });
db.image_files.insert({ file: "1.jpg", aspect: "16:9" });
db.image_files.insert({ file: "2.jpg", aspect: "4:3" });
db.image_files.insert({ file: "2.jpg", aspect: "16:9" });
db.image_files.insert({ file: "3.jpg", aspect: "2.35:1" });
In the shell, we may find distinct records.
> db.image_files.distinct('file');
[ "1.jpg", "2.jpg", "3.jpg" ]
How to do it with Java and the MongoDB 3.0 driver?
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
public class Main {
public static void main(String[] args) {
MongoClient mongo = new MongoClient();
MongoDatabase db = mongo.getDatabase("imagedb");
MongoCollection<Document> filesCollection = db.getCollection("image_files");
MongoCursor<String> files = filesCollection.distinct("file", String.class).iterator();
while(files.hasNext()) {
System.out.println(files.next());
}
}
}
distinct
to work (returns an empty iterable no matter what I do). Did this work for you as written in the accepted answer? - stav