• 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()  

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

  • 相关阅读:
    postgres配置主从流复制
    laravel5如何创建service provider和facade
    postgres中几个复杂的sql语句
    Laravel5设计json api时候的一些道道
    技术晨读_2015_4_13
    PHP 中的Closure
    l5如何通过路由走api版本回退查找设置
    postgres中的中文分词zhparser
    postgres中的视图和物化视图
    问题:Virtual Box如何复制镜像
  • 原文地址:https://www.cnblogs.com/xiangyu721/p/14068104.html
Copyright © 2020-2023  润新知