/codes/spring-tutorial-data/spring-tutorial-data-nosql/src/main/java/io/github/dunwu/springboot/data/db/mongo/QuickTour.java
https://github.com/dunwu/spring-tutorial · Java · 175 lines · 104 code · 38 blank · 33 comment · 8 complexity · 15971f35c462b8864bb210d30810b865 MD5 · raw file
- package io.github.dunwu.springboot.data.db.mongo;
- import com.mongodb.Block;
- import com.mongodb.MongoClient;
- import com.mongodb.MongoClientURI;
- import com.mongodb.client.MongoCollection;
- import com.mongodb.client.MongoCursor;
- import com.mongodb.client.MongoDatabase;
- import com.mongodb.client.model.*;
- import com.mongodb.client.result.DeleteResult;
- import com.mongodb.client.result.UpdateResult;
- import org.bson.Document;
- import java.util.ArrayList;
- import java.util.List;
- import static com.mongodb.client.model.Filters.*;
- import static com.mongodb.client.model.Projections.excludeId;
- import static com.mongodb.client.model.Sorts.descending;
- /**
- * The QuickTour code example see: https://mongodb.github.io/mongo-java-driver/3.0/getting-started
- */
- public class QuickTour {
- /**
- * Run this main method to see the output of this quick example.
- * @param args takes an optional single argument for the connection string
- */
- public static void main(final String[] args) {
- MongoClient mongoClient;
- if (args.length == 0) {
- // connect to the local database server
- mongoClient = new MongoClient("localhost", 27017);
- } else {
- mongoClient = new MongoClient(new MongoClientURI(args[0]));
- }
- // get handle to "mydb" database
- MongoDatabase database = mongoClient.getDatabase("mydb");
- // get a handle to the "test" collection
- MongoCollection<Document> collection = database.getCollection("test");
- // drop all the data in it
- collection.drop();
- // make a document and insert it
- Document doc = new Document("name", "MongoDB").append("type", "database").append("count", 1).append("info",
- new Document("x", 203).append("y", 102));
- collection.insertOne(doc);
- // get it (since it's the only one in there since we dropped the rest earlier on)
- Document myDoc = collection.find().first();
- System.out.println(myDoc.toJson());
- // now, lets add lots of little documents to the collection so we can explore
- // queries and cursors
- List<Document> documents = new ArrayList<Document>();
- for (int i = 0; i < 100; i++) {
- documents.add(new Document("i", i));
- }
- collection.insertMany(documents);
- System.out.println("total # of documents after inserting 100 small ones (should be 101) " + collection.count());
- // find first
- myDoc = collection.find().first();
- System.out.println(myDoc.toJson());
- // lets get all the documents in the collection and print them out
- MongoCursor<Document> cursor = collection.find().iterator();
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next().toJson());
- }
- } finally {
- cursor.close();
- }
- for (Document cur : collection.find()) {
- System.out.println(cur.toJson());
- }
- // now use a query to get 1 document out
- myDoc = collection.find(eq("i", 71)).first();
- System.out.println(myDoc.toJson());
- // now use a range query to get a larger subset
- cursor = collection.find(gt("i", 50)).iterator();
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next().toJson());
- }
- } finally {
- cursor.close();
- }
- // range query with multiple constraints
- cursor = collection.find(and(gt("i", 50), lte("i", 100))).iterator();
- try {
- while (cursor.hasNext()) {
- System.out.println(cursor.next().toJson());
- }
- } finally {
- cursor.close();
- }
- // Query Filters
- myDoc = collection.find(eq("i", 71)).first();
- System.out.println(myDoc.toJson());
- // now use a range query to get a larger subset
- Block<Document> printBlock = new Block<Document>() {
- @Override
- public void apply(final Document document) {
- System.out.println(document.toJson());
- }
- };
- collection.find(gt("i", 50)).forEach(printBlock);
- // filter where; 50 < i <= 100
- collection.find(and(gt("i", 50), lte("i", 100))).forEach(printBlock);
- // Sorting
- myDoc = collection.find(exists("i")).sort(descending("i")).first();
- System.out.println(myDoc.toJson());
- // Projection
- myDoc = collection.find().projection(excludeId()).first();
- System.out.println(myDoc.toJson());
- // Update One
- collection.updateOne(eq("i", 10), new Document("$set", new Document("i", 110)));
- // Update Many
- UpdateResult updateResult = collection.updateMany(lt("i", 100), new Document("$inc", new Document("i", 100)));
- System.out.println(updateResult.getModifiedCount());
- // Delete One
- collection.deleteOne(eq("i", 110));
- // Delete Many
- DeleteResult deleteResult = collection.deleteMany(gte("i", 100));
- System.out.println(deleteResult.getDeletedCount());
- collection.drop();
- // ordered bulk writes
- List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
- writes.add(new InsertOneModel<Document>(new Document("_id", 4)));
- writes.add(new InsertOneModel<Document>(new Document("_id", 5)));
- writes.add(new InsertOneModel<Document>(new Document("_id", 6)));
- writes.add(new UpdateOneModel<Document>(new Document("_id", 1), new Document("$set", new Document("x", 2))));
- writes.add(new DeleteOneModel<Document>(new Document("_id", 2)));
- writes.add(new ReplaceOneModel<Document>(new Document("_id", 3), new Document("_id", 3).append("x", 4)));
- collection.bulkWrite(writes);
- collection.drop();
- collection.bulkWrite(writes, new BulkWriteOptions().ordered(false));
- // collection.find().forEach(printBlock);
- // Clean up
- database.drop();
- // release resources
- mongoClient.close();
- }
- }