jar包依赖和 官方文档 https://docs.mongodb.com/manual/reference/program/mongo/
The MongoClient
instance represents a pool of connections to the database; you will only need one instance of class MongoClient
even with multiple threads.
一个MongoClient实例是一个连接池,程序中只需要使用一个就够了。
JavaDriver:
import com.mongodb.client.*; import com.mongodb.client.model.Filters; import com.mongodb.client.result.UpdateResult; import org.bson.Document; import java.util.ArrayList; import java.util.List; import java.util.function.Consumer; public class TestDB { public static void main(String [] args) { // MongoClient client = MongoClients.create(); // MongoClient client = MongoClients.create(MongoClientSettings.builder().applyToClusterSettings( // builder->builder.hosts(Arrays.asList(new ServerAddress("localhost", 27017))) // ).build()); MongoClient client = MongoClients.create("mongodb://localhost:27017"); MongoDatabase testDB = client.getDatabase("test"); MongoCollection<Document> userCollection = testDB.getCollection("userTable"); // 表不需要主动创建 userCollection.drop(); Document oneUser = new Document("name", " WangMing") .append("age", 22) .append("info", new Document("tel", "123456789").append("email", "11@qq.com")); // 插入一条数据 userCollection.insertOne(oneUser); List<Document> documents = new ArrayList<Document>(); for (int i =0; i<3; i++) { // 一组包含相同键值的数据 documents.add(new Document("key_i", i)); } MongoCollection<Document> demoCollection = testDB.getCollection("demoTable"); demoCollection.drop(); // 按顺序插入多条数据 demoCollection.insertMany(documents); System.out.println(demoCollection.countDocuments()); // .find().first() 无记录的情况下,first返回值为空,find返回值不为空,不必担心空指针 Document firstDoc = userCollection.find().first(); // toString 方法返回的不是json串 System.out.println(firstDoc.toJson()); System.out.println(" toString 方法返回的不是json串 "); System.out.println(firstDoc.toString()); System.out.println("查询数据并遍历 "); MongoCursor<Document> cursor = demoCollection.find().iterator(); while(cursor.hasNext()){ System.out.println(cursor.next().toJson()); } cursor.close(); for (Document cur: demoCollection.find()){ System.out.println(cur.toJson()); } System.out.println(" the value type of key_i is int "); Document second = demoCollection.find(Filters.eq("key_i", 2)).first(); System.out.println(second.toJson()); System.out.println("//把int 2 更新为string 2 "); // Use Update Operators such as $set, $unset, or $rename. demoCollection.updateOne(Filters.eq("key_i", 2), new Document("$set", new Document("key_i", "2") ) ); Document updated = demoCollection.find(Filters.eq("key_i", "2")).first(); System.out.println(" 更新后 数值是String 类型 "); System.out.println(updated.toJson()); System.out.println("// second 变量是旧数据"); System.out.println(second.toJson()); UpdateResult updateResult = demoCollection.updateMany(Filters.eq("key_i", 1), new Document().append("$set", new Document().append("key_i", "1"))); System.out.println(updateResult.getModifiedCount()); Consumer<Document> consumer = new Consumer<Document>() { @Override public void accept(Document document) { System.out.println(document.toJson()); } }; System.out.println("next print string values"); demoCollection.find(Filters.gt("i", 0)).forEach(consumer); } }