import java.net.UnknownHostException; import java.util.Date; import com.mongodb.*; import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoCollection; import com.mongodb.client.FindIterable; import org.bson.Document; /** * Java + MongoDB Query example * * The program takes an artist name as its one command-line argument. * It print information about the artist (e.g, nationality, gender, etc.) * It then prints information about every artwork produced by the artist. * */ public class MongoApp { public static void main(String[] args) { // get artist name from args[0] if(args.length==0){ System.err.println("Usage: java MongoApp "); System.exit(1); } String artistName = args[0]; // server location is command-line argument 0 String server = "mongodb.cs.oberlin.edu"; //System.err.close(); try { /**** Connect to MongoDB ****/ // Since 2.10.0, uses MongoClient MongoClient mongo = new MongoClient(new ServerAddress(server,27017)); /**** Get database ****/ // if database doesn't exists, MongoDB will create it for you MongoDatabase db = mongo.getDatabase("moma"); /**** Get collection Artists from 'moma' ****/ // if collection doesn't exists, MongoDB will create it for you MongoCollection artists = db.getCollection("Artists"); // and open the Artworks collection to get the artworks for this artist MongoCollection artworks = db.getCollection("Artworks"); /**** search for artist by name ****/ BasicDBObject searchQuery = new BasicDBObject(); searchQuery.put("DisplayName", artistName); FindIterable artistCursor = artists.find(searchQuery); for(Document artistDocument : artistCursor){ String name = (String) artistDocument.get("DisplayName"); System.out.println("Name: "+name); System.out.println("Nationality: "+artistDocument.get("Nationality")); System.out.println("Gender: "+artistDocument.get("Gender")); System.out.println("BeginDate: "+artistDocument.get("BeginDate")); System.out.println("EndDate: "+artistDocument.get("EndDate")); Integer artistID = (Integer) artistDocument.get("ConstituentID"); System.out.println("ArtistID:"+artistID); System.out.println(); System.out.println("Artworks by "+name); int count = 0; /**** search for artworks by artist ID ****/ searchQuery = new BasicDBObject(); searchQuery.put("ConstituentID", artistID); FindIterable artworkCursor = artworks.find(searchQuery); for(Document artworkDocument : artworkCursor){ System.out.println(); System.out.println((++count)+":"); System.out.println("Title: "+artworkDocument.get("Title")); System.out.println("Medium: "+artworkDocument.get("Medium")); System.out.println("Date: "+artworkDocument.get("Date")); System.out.println("CreditLine: "+artworkDocument.get("CreditLine")); System.out.println("Classification: "+artworkDocument.get("Classification")); System.out.println("Department: "+artworkDocument.get("Department")); } } } catch (MongoException e) { System.out.println(e); e.printStackTrace(); } } }