Loading... # 2-5 java 和 MongoDB ## 第1关:Java 操作 MongoDB 数据库(一) ### Java 连接数据库 #### 获取 Java 的 Mongodb 驱动包 在[ Java 的 MongoDB 驱动包获取网址 ](http://central.maven.org/maven2/org/mongodb/mongo-java-driver/)下载获取最新版本的驱动包,我已经帮你下载 mongo-java-driver-3.9.1.jar 放在响应环境目录下。 #### Java 代码连接无密码数据库 通过以下两条代码,进行数据库的连接: ``` MongoClient mongoClient = new MongoClient("localhost",27020); //启动本地服务,端口号为27020 MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName"); //连接名为databaseName数据库 ``` ### 编译代码进行数据库连接 此步骤无需操作,平台会完成编译: ``` javac -cp .:mongo-java-driver-3.9.1.jar Mongoconnect.java java -cp .:mongo-java-driver-3.9.1.jar Mongoconnect ``` ### 创建集合 我们可以使用驱动 com.mongodb.client.MongoDatabase 类中的 createCollection() 来创建集合: ``` mongoDatabase.createCollection("test"); //创建集合test ``` ### 获取集合 使用驱动 com.mongodb.client.MongoDatabase 类的 getCollection() 方法来获取集合: ``` MongoCollection<Document> collection = mongoDatabase.getCollection("test"); //获取集合test ``` ### 插入文档 使用驱动 com.mongodb.client.MongoCollection 类的 insertMany() 方法来插入一个文档: ``` //注意,在插入文档前,先选好集合再进行操作,选择test集合 MongoCollection<Document> collection = mongoDatabase.getCollection("test"); Document document1 = new Document(); //创建一条文档 document1,以下代码为向文档 document1 中追加数据 document1.append("title", "MongoDB"); document1.append("content", "I love MongoDB"). document1.append("nums", 90). document1.append("tags", "database"); Document document2 = new Document(); //创建一条文档 document2,以下代码为向文档 document1 中追加数据 document2.append("title", "Java"); document2.append("content", "I love Java"). document2.append("nums", 30). document2.append("tags", "language"); List<Document> documents = new ArrayList<Document>(); //将以上文档打包存放,为文档插入做准备 documents.add(document1); documents.add(document2); collection.insertMany(documents); //插入多条文档到集合中 ``` ### 实训 #### 连接到mongodb服务 ``` MongoClient mongoClient = new MongoClient("localhost",27017); MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb1"); ``` #### 创建集合test1 ``` mongoDatabase.createCollection("test1"); ``` #### 获取集合test1 ``` MongoCollection<Document> collection = mongoDatabase.getCollection("test1"); ``` #### 插入编程要求中的数据到集合test1 ``` Document document1 = new Document(); document1.append("_id","1"); document1.append("name", "Xiaoming"); document1.append("sex","man"); document1.append("age", 21); collection.insertOne(document1); ``` ## 第2关:Java 操作 MongoDB 数据库(二) ### 检索文档 使用驱动 com.mongodb.client.MongoCollection 类中的 find() 方法来获取集合中的所有文档。 此方法返回一个游标,所以你需要遍历这个游标。 ``` //检索所有文档 /** * 1. 获取迭代器FindIterable<Document> * 2. 获取游标MongoCursor<Document> * 3. 通过游标遍历检索出的文档集合 **/ FindIterable<Document> findIterable = collection.find(); MongoCursor<Document> mongoCursor = findIterable.iterator(); while(mongoCursor.hasNext()){ System.out.println(mongoCursor.next()); } ``` ### 更新文档 你可以使用 com.mongodb.client.MongoCollection 类中的 updateMany() 方法来更新集合中的文档: ``` //更新文档:将第一关例子文档中nums=90的文档修改为nums=100 collection.updateMany(Filters.eq("nums", 90), new Document("$set",new Document("nums",100))); ``` ### 删除文档 要删除集合中的第一个文档,首先你需要使用 com.mongodb.DBCollection 类中的 findOne() 方法来获取第一个文档,然后使用 remove() 方法删除。 ``` //删除符合条件的第一个文档 collection.deleteOne(Filters.eq("nums", 100)); //删除所有符合条件的文档 collection.deleteMany (Filters.eq("nums", 100)); ``` ### 实训 #### 连接数据库mydb2并选择集合test2 ``` MongoClient mongoClient = new MongoClient("localhost", 27017); MongoDatabase mongoDatabase = mongoClient.getDatabase("mydb2"); mongoDatabase.createCollection("test2"); ``` #### 插入文档到集合test2中 ``` MongoCollection<Document> collection = mongoDatabase.getCollection("test2"); Document document1 = new Document(); document1.append("_id", "1"); document1.append("name", "Xiaoming"); document1.append("sex", "man"); document1.append("age", 21); Document document2 = new Document(); document2.append("_id", "2"); document2.append("name", "Xiaohong"); document2.append("sex", "woman"); document2.append("age", 20); Document document3 = new Document(); document3.append("_id", "3"); document3.append("name", "Xiaoliang"); document3.append("sex", "man"); document3.append("age", 22); List<Document> documents = new ArrayList<>(); documents.add(document1); documents.add(document2); documents.add(document3); collection.insertMany(documents); ``` #### 更新 Xiaohong 的信息为23岁 ``` collection.updateMany(Filters.eq("age", 20), new Document("$set", new Document("age", 23))); ``` #### 删除Xiaoliang的信息 ``` collection.deleteMany(Filters.eq("name", "Xiaoliang")); ``` 最后修改:2021 年 11 月 01 日 10 : 49 AM © 允许规范转载