MongoDB Java操作

实验环境:

1Linux Ubuntu 14.04;

2jdk-7u75-linux-x64;

3mongodb-linux-x86_64-3.4.2;

4eclipse-java-juno-SR2-linux-gtk-x86_64。

实验原理

Java驱动是MongoDB最早的驱动。它已经用于生产环境多年,而且非常稳定,是企业开发的首选。

要在Java应用中访问和使用MongoDB,需要使用Java MongoDB驱动程序。Java MongoDB驱动程序是一个库,它提供了多个对象,供使用者连接数据库,进而查找和操作集合中的对象,这些对象分别表示MongoDB服务器连接、数据库、集合、游标和文档,提供了在Java应用程序中集成MongoDB数据库中的数据所需的功能。

Java对象MongoClient提供了连接到MongoDB服务器和访问数据库的功能。要在应用程序中实现MongoDB,首先要创建一个MongoClient对象实例,然后就可使用它来访问数据库。

 

实验目的:

1、了解使用Java操作MongoDB的流程

2、学习编写Java操作MongoDB的代码

 

实验内容

1.编写Java代码连接MongoDB数据库。

2.编写Java代码在MongoDB中创建集合。

3.编写Java代码在MongoDB中获取集合。

4.编写Java代码在MongoDB中插入文档。

5.编写Java代码在MongoDB中检索所有文档。

6.编写Java代码在MongoDB中更新文档。

7.编写Java代码在MongoDB中删除文档。

实验步骤

连接数据库:

private static MongoClient mongoClient;

private static MongoDatabase mongoDatabase;

 

public static void getConn(){

    mongoClient=new MongoClient("192.168.132.128",27017);

    mongoDatabase=mongoClient.getDatabase("test");

    System.out.println("已连接数据库");

}

 

创建集合:

 

public static void main(String[]args){

    getConn();

   mongoDatabase.createCollection("model");

   System.out.println("Collection create successfully");

}

 

获取集合:

public static void main(String[]args){

    getConn();

   MongoCollection<Document>collection=mongoDatabase.getCollection("model");

   System.out.println("Get collection model successfully");

}

 

插入文档:

@Test

public static void insert(){

    MongoCollection<Document> collection=mongoDatabase.getCollection("model");

    Document document=new Document("name","tryuser").append("score","80").append("sex","man").append("age","20");

    collection.insertOne(document);

    System.out.println("添加成功");

}

public static void main(String[]args){

    getConn();

    insert();

}

 

 

检索所有文档:

@Test

public static void findall() {

    MongoCollection<Document>collection=mongoDatabase.getCollection("Student");

    MongoCursor<Document>iterator=collection.find().iterator();

    System.out.println("Student的数据为");

    while (iterator.hasNext()){

        System.out.println(iterator.next());

    }

}

public static void main(String[]args){

    getConn();

    findall();

}

 

更新文档:

@Test

public static void updatetest(){

    MongoCollection<Document>collection=mongoDatabase.getCollection("model");

    Bson filter= Filters.eq("name","tryuser");

    Document document=new Document("$set",new Document("name","UPDATEUSER"));

    collection.updateOne(filter,document);

    System.out.println("更改成功");

}

public static void main(String[]args){

    getConn();

    updatetest();

}

 

删除文档:

@Test

public static void deletetest(){

    MongoCollection<Document>collection=mongoDatabase.getCollection("model");

    Bson filter= Filters.eq("name","UPDATEUSER");

    collection.deleteOne(filter);

    System.out.println("删除成功");

}

public static void main(String[]args){

    getConn();

    deletetest();

}

 

 

 

 

 

 

 

1.Linux本地新建/data/mongodb8目录。

  1. mkdir -p /data/mongodb8  

2.切换到/data/mongodb8目录,使用wget命令,下载http://192.168.1.100:60000/allfiles/mongodb8中的文件。

  1. cd /data/mongodb8  
  2. wget http://192.168.1.100:60000/allfiles/mongodb8/mongodbjar.tar.gz  

3./data/mongodb8目录中的mongodbjar.tar.gz解压到当前目录下。

  1. tar zxvf mongodbjar.tar.gz  

4.启动MongoDB shell

  1. numactl --interleave=all mongod -config /apps/mongodb/bin/mongodb.conf  
  2. mongo  

5.切换到admin数据库,使用root账户。

  1. use admin  
  2. db.auth('root','strongs')  

6.开启Eclipse,创建Java Project项目,命名为MongoJava

 

 

7.MongoJava项目下新建包,名为mongo

 

 

8.mongo包下新建类,类名为mimalianjie

 

 

9.添加项目依赖的jar包,右键单击MongoJava,选择Import

 

10.选择General中的File System,点击Next

 

11.选择/data/mongodb8中的mongodbjar文件夹,并勾选Create top-level folder

 

12.选中mongodbjar文件夹中全部文件,右击选择Build Path中的Add to Build Path

 

13.连接数据库:编写代码,功能为连接Mongodb数据库。我们需要指定数据库名称,如果指定的数据库不存在,mongo会自动创建数据库。

完整代码为:

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import com.mongodb.MongoClient;  
  4. import com.mongodb.MongoCredential;  
  5. import com.mongodb.ServerAddress;  
  6. import com.mongodb.client.MongoDatabase;  
  7. public class mimalianjie {  
  8. public static void main(String[] args){  
  9. try {  
  10. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  11. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  12. addrs.add(serverAddress);  
  13. MongoCredential credential = MongoCredential.createScramSha1Credential("root", "admin", "strongs".toCharArray());  
  14. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  15. credentials.add(credential);  
  16. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  17. MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");  
  18. System.out.println("Connect to database successfully");  
  19. catch (Exception e) {  
  20. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  21. }  
  22. }  
  23. }  

编译运行以上程序,输出结果如下:

 

14.创建集合:与上述步骤相同,在mongo包下新建类,类名为chuangjianjihe,编写代码,功能为在test库下创建集合mycol(使用com.mongodb.client.MongoDatabase类中的createCollection()来创建集合)

完整代码为:

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import com.mongodb.MongoClient;  
  4. import com.mongodb.MongoCredential;  
  5. import com.mongodb.ServerAddress;  
  6. import com.mongodb.client.MongoDatabase;  
  7. public class chuangjianjihe {  
  8. public static void main(String[] args){  
  9. try {  
  10. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  11. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  12. addrs.add(serverAddress);  
  13. MongoCredential credential = MongoCredential.createScramSha1Credential("root", "admin", "strongs".toCharArray());  
  14. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  15. credentials.add(credential);  
  16. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  17. MongoDatabase mongoDatabase = mongoClient.getDatabase("test");  
  18. System.out.println("Connect to database successfully");  
  19. mongoDatabase.createCollection("mycol");  
  20. System.out.println("Collection mycol was created successfully");  
  21. catch (Exception e) {  
  22. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  23. }  
  24. }  
  25. }  

编译运行以上程序,输出结果如下:

 

15.mongodb中进行验证:

  1. use test  
  2. show collections  

 

16.获取集合:mongo包下新建类,名为huoqujihe,并编写代码,功能为获取所需集合(使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合)

完整代码为:

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import com.mongodb.MongoClient;  
  4. import com.mongodb.MongoCredential;  
  5. import com.mongodb.ServerAddress;  
  6. import com.mongodb.client.MongoCollection;  
  7. import com.mongodb.client.MongoDatabase;  
  8. public class huoqujihe {  
  9. public static void main(String[] args){  
  10. try {  
  11. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  12. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  13. addrs.add(serverAddress);  
  14. MongoCredential credential = MongoCredential.createScramSha1Credential("root",  
  15. "admin", "strongs".toCharArray());  
  16. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  17. credentials.add(credential);  
  18. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  19. MongoDatabase mongoDatabase = mongoClient.getDatabase("test");  
  20. System.out.println("Connect to database successfully");  
  21. MongoCollection<org.bson.Document> collection = mongoDatabase.getCollection("mycol");  
  22. System.out.println("Collect mycol selection is successful");  
  23. catch (Exception e) {  
  24. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  25. }  
  26. }  
  27. }  

编译运行以上程序,输出结果如下:

 

17.插入文档:mongo包中新建类,名为charuwendang,功能为连接test库,选择mycol集合并向其中插入文档。(使用com.mongodb.client.MongoCollection类的insertMany()方法来插入一个文档)

完整代码为:

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. import org.bson.Document;  
  5. import com.mongodb.MongoClient;  
  6. import com.mongodb.MongoCredential;  
  7. import com.mongodb.ServerAddress;  
  8. import com.mongodb.client.MongoCollection;  
  9. import com.mongodb.client.MongoDatabase;  
  10. public class charuwendang{  
  11. public static void main( String args[] ){  
  12. try{  
  13. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  14. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  15. addrs.add(serverAddress);  
  16. MongoCredential credential = MongoCredential.createScramSha1Credential("root",  
  17. "admin", "strongs".toCharArray());  
  18. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  19. credentials.add(credential);  
  20. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  21. MongoDatabase mongoDatabase = mongoClient.getDatabase("test");  
  22. System.out.println("Connect to database successfully");  
  23. MongoCollection<org.bson.Document> collection = mongoDatabase.getCollection("mycol");  
  24. System.out.println("Collection mycol selection is successful");  
  25. Document document = new Document("name", "zhangyudashuju").  
  26. append("description", "YXCX").  
  27. append("likes", 100).  
  28. append("location", "BJ");  
  29. List<Document> documents = new ArrayList<Document>();  
  30. documents.add(document);  
  31. collection.insertMany(documents);  
  32. System.out.println("Document inserted successfully");  
  33. }catch(Exception e){  
  34. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  35. }  
  36. }  
  37. }  

编译运行以上程序,输出结果如下:

 

18.mongodb中进行查询验证:

  1. use test  
  2. show collections  
  3. db.mycol.find()  

 

19.检索文档:mongo包中新建类,名为jiansuosuoyouwendang,功能为检索test库下,mycol集合中的所有文档(使用 com.mongodb.client.MongoCollection 类中的 find() 方法来获取集合中的所有文档)

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import org.bson.Document;  
  4. import com.mongodb.MongoClient;  
  5. import com.mongodb.MongoCredential;  
  6. import com.mongodb.ServerAddress;  
  7. import com.mongodb.client.FindIterable;  
  8. import com.mongodb.client.MongoCollection;  
  9. import com.mongodb.client.MongoCursor;  
  10. import com.mongodb.client.MongoDatabase;  
  11. public class jiansuosuoyouwendang{  
  12. public static void main( String args[] ){  
  13. try{  
  14. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  15. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  16. addrs.add(serverAddress);  
  17. MongoCredential credential = MongoCredential.createScramSha1Credential("root",  
  18. "admin", "strongs".toCharArray());  
  19. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  20. credentials.add(credential);  
  21. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  22. MongoDatabase mongoDatabase = mongoClient.getDatabase("test");  
  23. System.out.println("Connect to database successfully");  
  24. MongoCollection<org.bson.Document> collection = mongoDatabase.getCollection("mycol");  
  25. System.out.println("Collection mycol selection is successful");  
  26. FindIterable<Document> findIterable = collection.find();  
  27. MongoCursor<Document> mongoCursor = findIterable.iterator();  
  28. while(mongoCursor.hasNext()){  
  29. System.out.println(mongoCursor.next());  
  30. }  
  31. }catch(Exception e){  
  32. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  33. }  
  34. }  
  35. }  

编译运行以上程序,输出结果如下:

 

20.更新文档:mongo包中新建类,名为gengxinwendang,功能为选择test库下mycol集合,将文档中的likes=100改为likes=200(使用 com.mongodb.client.MongoCollection 类中的updateMany() 方法来更新集合中的文档)

完整代码为:

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import org.bson.Document;  
  4. import com.mongodb.MongoClient;  
  5. import com.mongodb.MongoCredential;  
  6. import com.mongodb.ServerAddress;  
  7. import com.mongodb.client.FindIterable;  
  8. import com.mongodb.client.MongoCollection;  
  9. import com.mongodb.client.MongoCursor;  
  10. import com.mongodb.client.MongoDatabase;  
  11. import com.mongodb.client.model.Filters;  
  12. public class gengxinwendang{  
  13. public static void main( String args[] ){  
  14. try{  
  15. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  16. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  17. addrs.add(serverAddress);  
  18. MongoCredential credential = MongoCredential.createScramSha1Credential("root",  
  19. "admin", "strongs".toCharArray());  
  20. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  21. credentials.add(credential);  
  22. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  23. MongoDatabase mongoDatabase = mongoClient.getDatabase("test");  
  24. System.out.println("Connect to database successfully");  
  25. MongoCollection<org.bson.Document> collection = mongoDatabase.getCollection("mycol");  
  26. System.out.println("Collection mycol selection is successful");  
  27. collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));  
  28. FindIterable<Document> findIterable = collection.find();  
  29. MongoCursor<Document> mongoCursor = findIterable.iterator();  
  30. while(mongoCursor.hasNext()){  
  31. System.out.println(mongoCursor.next());  
  32. }  
  33. }catch(Exception e){  
  34. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  35. }  
  36. }  
  37. }  

编译运行以上程序,输出结果如下:

 

21.mongodb中进行查询验证

  1. use test  
  2. show collections  
  3. db.mycol.find()  

 

22.删除文档:mongo包中新建类,名为sanchuwendang,功能为选择test库下mycol集合,删除所有符合条件(likes=200)的文档。(使用com.mongodb.DBCollection类中的findOne()方法来获取第一个文档,然后使用remove方法删除)

完整代码为:

  1. package mongo;  
  2. import java.util.ArrayList;  
  3. import org.bson.Document;  
  4. import com.mongodb.MongoClient;  
  5. import com.mongodb.MongoCredential;  
  6. import com.mongodb.ServerAddress;  
  7. import com.mongodb.client.FindIterable;  
  8. import com.mongodb.client.MongoCollection;  
  9. import com.mongodb.client.MongoCursor;  
  10. import com.mongodb.client.MongoDatabase;  
  11. import com.mongodb.client.model.Filters;  
  12. public class sanchuwendang{  
  13. public static void main( String args[] ){  
  14. try{  
  15. ServerAddress serverAddress = new ServerAddress("localhost",27017);  
  16. ArrayList<ServerAddress> addrs = new ArrayList<ServerAddress>();  
  17. addrs.add(serverAddress);  
  18. MongoCredential credential = MongoCredential.createScramSha1Credential("root",  
  19. "admin", "strongs".toCharArray());  
  20. ArrayList<MongoCredential> credentials = new ArrayList<MongoCredential>();  
  21. credentials.add(credential);  
  22. MongoClient mongoClient = new MongoClient(addrs,credentials);  
  23. MongoDatabase mongoDatabase = mongoClient.getDatabase("test");  
  24. System.out.println("Connect to database successfully");  
  25. MongoCollection<org.bson.Document> collection = mongoDatabase.getCollection("mycol");  
  26. System.out.println("Collection mycol selection is successful");  
  27. //删除符合条件的第一个文档  
  28. //collection.deleteOne(Filters.eq("likes", 200));  
  29. //删除所有符合条件的文档  
  30. collection.deleteMany (Filters.eq("likes", 200));  
  31. //检索查看结果  
  32. FindIterable<Document> findIterable = collection.find();  
  33. MongoCursor<Document> mongoCursor = findIterable.iterator();  
  34. while(mongoCursor.hasNext()){  
  35. System.out.println(mongoCursor.next());  
  36. }  
  37. }catch(Exception e){  
  38. System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
  39. }  
  40. }  
  41. }  

编译运行以上程序,输出结果如下:

 

23.mongodb中进行查询验证

  1. use test  
  2. show collections  
  3. db.mycol.find()  

 

查询结果为空,证明文档已被删除。

posted @ 2020-12-01 15:02  Spongbob  阅读(467)  评论(0编辑  收藏  举报