/** * */ package mongodb.client; import java.util.ArrayList; import java.util.Arrays; import org.bson.Document; import org.bson.UuidRepresentation; import org.bson.codecs.UuidCodec; import org.bson.codecs.configuration.CodecRegistries; import org.bson.codecs.configuration.CodecRegistry; import org.junit.After; import org.junit.Before; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.ListDatabasesIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import com.mongodb.client.model.Filters; /** * @author dzh * @data Jul 6, 2015 3:50:35 PM * @since 1.0 */ public class TestMongoClient { static MongoClient mongoClient; @Before public void start() { // MongoClientOptions.builder().cursorFinalizerEnabled(false); // MongoClientURI uri = new MongoClientURI(); // mongoClient = new MongoClient(); // mongoClient.setOptions(); // MongoClientURI connectionString = new MongoClientURI( // "mongodb://localhost:27017,localhost:27018,localhost:27019/"); MongoClientURI connectionString = new MongoClientURI( "mongodb://localhost:27017/"); mongoClient = new MongoClient(connectionString); } public void testDatabase() { ListDatabasesIterable<Document> list = mongoClient.listDatabases(); MongoCursor<Document> iterD = list.iterator(); while (iterD.hasNext()) { Document doc = iterD.next(); System.out.println(doc); if (!doc.getBoolean("empty", true)) { System.out.println(mongoClient.getDatabase(doc .getString("name"))); } } // MongoIterable<String> mongo = mongoClient.listDatabaseNames(); // MongoCursor<String> iter = mongo.iterator(); // while (iter.hasNext()) { // System.out.println(iter.next()); // } } public void testCarStatus() { // CodecRegistry codecRegistry = CodecRegistries.fromRegistries( // CodecRegistries.fromCodecs(new UuidCodec( // UuidRepresentation.STANDARD)), MongoClient // .getDefaultCodecRegistry()); // MongoDatabase rent = mongoClient.getDatabase("lech_rent") // .withCodecRegistry(codecRegistry); // MongoCollection<Document> status = rent.getCollection("car_status"); } public void testDriverStatus() { CodecRegistry codecRegistry = CodecRegistries.fromRegistries( CodecRegistries.fromCodecs(new UuidCodec( UuidRepresentation.STANDARD)), MongoClient .getDefaultCodecRegistry()); mongoClient.getDatabase("lech_rent").drop(); MongoDatabase rent = mongoClient.getDatabase("lech_rent") .withCodecRegistry(codecRegistry); // rent.createCollection("driver_status", new CreateCollectionOptions() // .capped(true).sizeInBytes(0x100000)); MongoCollection<Document> status = rent.getCollection("driver_status"); status.deleteMany(Filters.eq("mobile", "18616020610")); if (status.count() == 0) { } status.createIndex(new Document("mobile", "text")); // status.createIndex(new Document("no", "text")); for (final Document index : status.listIndexes()) { System.out.println(index.toJson()); } Document doc = new Document("loc", new Document("type", "Point").append("coordinates", Arrays.asList(-73.97, 40.77))).append("no", "dno") .append("usrImg", "/usr/driver.png") .append("mobile", "18616020610").append("status", 7) .append("car", new Document("no", "A00001")); status.insertOne(doc); // status.createIndex(keys); doc = status.find(Filters.eq("mobile", "18616020610")).first(); System.out.println(doc.get("loc", Document.class).get("coordinates")); System.out.println(doc.get("loc", Document.class).get("coordinates", ArrayList.class)); System.out.println(doc.get("car", Document.class)); // System.out.println(doc.get("loc", Document.class)); // UpdateResult updateResult = status.updateOne(Filters.eq("mobile", // "18616020610"), new Document("$set", new Document("car", // new Document("no", "A00002")))); doc = status.find(Filters.eq("mobile", "18616020610")).first(); System.out.println(doc.get("car", Document.class)); // updateResult = status.updateMany(Filters.lt("i", 100), new Document( // "$inc", new Document("i", 100))); // System.out.println(updateResult.getModifiedCount()); // DeleteResult deleteResult = status.deleteOne(Filters.eq("i", 110)); // System.out.println(deleteResult.getDeletedCount()); // 2. Ordered bulk operation - order is guarenteed // status.bulkWrite(Arrays.asList(new InsertOneModel<>(new // Document("_id", // 4)), new InsertOneModel<>(new Document("_id", 5)), // new InsertOneModel<>(new Document("_id", 6)), // new UpdateOneModel<>(new Document("_id", 1), new Document( // "$set", new Document("x", 2))), new DeleteOneModel<>( // new Document("_id", 2)), // new ReplaceOneModel<>(new Document("_id", 3), new Document( // "_id", 3).append("x", 4)))); // 2. Unordered bulk operation - no guarantee of order of operation // status.bulkWrite(Arrays.asList(new InsertOneModel<>(new // Document("_id", // 4)), new InsertOneModel<>(new Document("_id", 5)), // new InsertOneModel<>(new Document("_id", 6)), // new UpdateOneModel<>(new Document("_id", 1), new Document( // "$set", new Document("x", 2))), new DeleteOneModel<>( // new Document("_id", 2)), // new ReplaceOneModel<>(new Document("_id", 3), new Document( // "_id", 3).append("x", 4))), new BulkWriteOptions() // .ordered(false)); } public void testUsrStatus() { // CodecRegistry codecRegistry = CodecRegistries.fromRegistries( // CodecRegistries.fromCodecs(new UuidCodec( // UuidRepresentation.STANDARD)), MongoClient // .getDefaultCodecRegistry()); // // MongoDatabase rent = mongoClient.getDatabase("lech_rent") // .withCodecRegistry(codecRegistry); // MongoCollection<Document> status = rent.getCollection("usr_status"); } public void testWithCodec() { // MongoDatabase db = mongoClient.getDatabase("mydb"); // db.getCollection("test"); // CodecRegistry codecRegistry = CodecRegistries.fromRegistries( // CodecRegistries.fromCodecs(new UuidCodec( // UuidRepresentation.STANDARD)), MongoClient // .getDefaultCodecRegistry()); // globally // MongoClientOptions options = MongoClientOptions.builder() // .codecRegistry(codecRegistry).build(); // MongoClient client = new MongoClient(new ServerAddress("127.0.0.1"), // options); // or per database // MongoDatabase database = client.getDatabase("mydb").withCodecRegistry( // codecRegistry); // or per collection // MongoCollection<Document> collection = database.getCollection("mycoll") // .withCodecRegistry(codecRegistry); } @After public void close() { mongoClient.close(); } }