MongoDB在Java中的使用

环境配置

在 Java 程序中如果要使用 MongoDB,你需要确保已经安装了 Java 环境及 MongoDB JDBC 驱动。

本章节实例时候 Mongo 3.x 以上版本。

你可以参考本站的Java教程来安装Java程序。现在让我们来检测你是否安装了 MongoDB JDBC 驱动。


连接数据库

连接数据库,你需要指定数据库名称,如果指定的数据库不存在,mongo会自动创建数据库。

连接数据库的Java代码如下:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
       // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
       
         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
       System.out.println("Connect to database successfully");
        
      }catch(Exception e){
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
     }
   }
}
18
 
1
import com.mongodb.MongoClient;
2
import com.mongodb.client.MongoDatabase;
3
 
          
4
public class MongoDBJDBC{
5
   public static void main( String args[] ){
6
      try{   
7
       // 连接到 mongodb 服务
8
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
9
       
10
         // 连接到数据库
11
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
12
       System.out.println("Connect to database successfully");
13
        
14
      }catch(Exception e){
15
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
16
     }
17
   }
18
}

现在,让我们来编译运行程序并连接到数据库 mycol。

你可以根据你的实际环境改变 MongoDB JDBC 驱动的路径。

本实例将 MongoDB JDBC 启动包 mongo-java-driver-3.2.2.jar 放在本地目录下:

$ javac -cp .:mongo-java-driver-3.2.2.jar MongoDBJDBC.java
$ java -cp .:mongo-java-driver-3.2.2.jar MongoDBJDBC
Connect to database successfully
Authentication: true
4
 
1
$ javac -cp .:mongo-java-driver-3.2.2.jar MongoDBJDBC.java
2
$ java -cp .:mongo-java-driver-3.2.2.jar MongoDBJDBC
3
Connect to database successfully
4
Authentication: true

本实例中 Mongo 数据库无需用户名密码验证。如果你的 Mongo 需要验证用户名及密码,可以使用以下代码:

import java.util.ArrayList;  
import java.util.List;  
import com.mongodb.MongoClient;  
import com.mongodb.MongoCredential;  
import com.mongodb.ServerAddress;  
import com.mongodb.client.MongoDatabase;  
  
public class MongoDBJDBC {  
    public static void main(String[] args){  
        try {  
            //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址  
            //ServerAddress()两个参数分别为 服务器地址 和 端口  
            ServerAddress serverAddress = new ServerAddress("localhost",27017);  
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
            addrs.add(serverAddress);  
              
            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
            MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());  
            List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
            credentials.add(credential);  
              
            //通过连接认证获取MongoDB连接  
            MongoClient mongoClient = new MongoClient(addrs,credentials);  
              
            //连接到数据库  
            MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");  
            System.out.println("Connect to database successfully");  
        } catch (Exception e) {  
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
        }  
    }  
} 
32
 
1
import java.util.ArrayList;  
2
import java.util.List;  
3
import com.mongodb.MongoClient;  
4
import com.mongodb.MongoCredential;  
5
import com.mongodb.ServerAddress;  
6
import com.mongodb.client.MongoDatabase;  
7
  
8
public class MongoDBJDBC {  
9
    public static void main(String[] args){  
10
        try {  
11
            //连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址  
12
            //ServerAddress()两个参数分别为 服务器地址 和 端口  
13
            ServerAddress serverAddress = new ServerAddress("localhost",27017);  
14
            List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
15
            addrs.add(serverAddress);  
16
              
17
            //MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
18
            MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());  
19
            List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
20
            credentials.add(credential);  
21
              
22
            //通过连接认证获取MongoDB连接  
23
            MongoClient mongoClient = new MongoClient(addrs,credentials);  
24
              
25
            //连接到数据库  
26
            MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");  
27
            System.out.println("Connect to database successfully");  
28
        } catch (Exception e) {  
29
            System.err.println( e.getClass().getName() + ": " + e.getMessage() );  
30
        }  
31
    }  
32
} 

创建集合

我们可以使用 com.mongodb.client.MongoDatabase 类中的createCollection()来创建集合

代码片段如下:

import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
      // 连接到 mongodb 服务
      MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
         
       
      // 连接到数据库
      MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
      System.out.println("Connect to database successfully");
      mongoDatabase.createCollection("test");
      System.out.println("集合创建成功");
        
      }catch(Exception e){
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
     }
   }
}
21
 
1
import com.mongodb.MongoClient;
2
import com.mongodb.client.MongoDatabase;
3
 
          
4
public class MongoDBJDBC{
5
   public static void main( String args[] ){
6
      try{   
7
      // 连接到 mongodb 服务
8
      MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
9
         
10
       
11
      // 连接到数据库
12
      MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
13
      System.out.println("Connect to database successfully");
14
      mongoDatabase.createCollection("test");
15
      System.out.println("集合创建成功");
16
        
17
      }catch(Exception e){
18
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
19
     }
20
   }
21
}

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

Connect to database successfully
集合创建成功
2
 
1
Connect to database successfully
2
集合创建成功

获取集合

我们可以使用com.mongodb.client.MongoDatabase类的 getCollection() 方法来获取一个集合

代码片段如下:

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
       // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
       
         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
       System.out.println("Connect to database successfully");
      
       MongoCollection<Document> collection = mongoDatabase.getCollection("test");
       System.out.println("集合 test 选择成功");
      }catch(Exception e){
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
     }
   }
}
22
 
1
import org.bson.Document;
2
import com.mongodb.MongoClient;
3
import com.mongodb.client.MongoCollection;
4
import com.mongodb.client.MongoDatabase;
5
 
          
6
public class MongoDBJDBC{
7
   public static void main( String args[] ){
8
      try{   
9
       // 连接到 mongodb 服务
10
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
11
       
12
         // 连接到数据库
13
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
14
       System.out.println("Connect to database successfully");
15
      
16
       MongoCollection<Document> collection = mongoDatabase.getCollection("test");
17
       System.out.println("集合 test 选择成功");
18
      }catch(Exception e){
19
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
20
     }
21
   }
22
}

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

Connect to database successfully
集合 test 选择成功
2
 
1
Connect to database successfully
2
集合 test 选择成功

插入文档

我们可以使用com.mongodb.client.MongoCollection类的 insertMany() 方法来插入一个文档

代码片段如下:

import java.util.ArrayList;
import java.util.List;
import org.bson.Document;

import com.mongodb.MongoClient;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
         // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
         
         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
         System.out.println("Connect to database successfully");
         
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
         System.out.println("集合 test 选择成功");
         //插入文档  
         /** 
         * 1. 创建文档 org.bson.Document 参数为key-value的格式 
         * 2. 创建文档集合List<Document> 
         * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 
         * */
         Document document = new Document("title", "MongoDB").  
         append("description", "database").  
         append("likes", 100).  
         append("by", "Fly");  
         List<Document> documents = new ArrayList<Document>();  
         documents.add(document);  
         collection.insertMany(documents);  
         System.out.println("文档插入成功");  
      }catch(Exception e){
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
      }
   }
}
39
 
1
import java.util.ArrayList;
2
import java.util.List;
3
import org.bson.Document;
4
 
          
5
import com.mongodb.MongoClient;
6
import com.mongodb.client.MongoCollection;
7
import com.mongodb.client.MongoDatabase;
8
 
          
9
public class MongoDBJDBC{
10
   public static void main( String args[] ){
11
      try{   
12
         // 连接到 mongodb 服务
13
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
14
         
15
         // 连接到数据库
16
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
17
         System.out.println("Connect to database successfully");
18
         
19
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
20
         System.out.println("集合 test 选择成功");
21
         //插入文档  
22
         /** 
23
         * 1. 创建文档 org.bson.Document 参数为key-value的格式 
24
         * 2. 创建文档集合List<Document> 
25
         * 3. 将文档集合插入数据库集合中 mongoCollection.insertMany(List<Document>) 插入单个文档可以用 mongoCollection.insertOne(Document) 
26
         * */
27
         Document document = new Document("title", "MongoDB").  
28
         append("description", "database").  
29
         append("likes", 100).  
30
         append("by", "Fly");  
31
         List<Document> documents = new ArrayList<Document>();  
32
         documents.add(document);  
33
         collection.insertMany(documents);  
34
         System.out.println("文档插入成功");  
35
      }catch(Exception e){
36
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
37
      }
38
   }
39
}

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

Connect to database successfully
集合 test 选择成功
文档插入成功
3
 
1
Connect to database successfully
2
集合 test 选择成功
3
文档插入成功

检索所有文档

我们可以使用 com.mongodb.client.MongoCollection 类中的 find() 方法来获取集合中的所有文档。

此方法返回一个游标,所以你需要遍历这个游标。

代码片段如下:

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
         // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
         
         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
         System.out.println("Connect to database successfully");
         
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
         System.out.println("集合 test 选择成功");
         
         //检索所有文档  
         /** 
         * 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());  
         }  
      
      }catch(Exception e){
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
      }
   }
}
37
 
1
import org.bson.Document;
2
import com.mongodb.MongoClient;
3
import com.mongodb.client.FindIterable;
4
import com.mongodb.client.MongoCollection;
5
import com.mongodb.client.MongoCursor;
6
import com.mongodb.client.MongoDatabase;
7
 
          
8
public class MongoDBJDBC{
9
   public static void main( String args[] ){
10
      try{   
11
         // 连接到 mongodb 服务
12
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
13
         
14
         // 连接到数据库
15
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
16
         System.out.println("Connect to database successfully");
17
         
18
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
19
         System.out.println("集合 test 选择成功");
20
         
21
         //检索所有文档  
22
         /** 
23
         * 1. 获取迭代器FindIterable<Document> 
24
         * 2. 获取游标MongoCursor<Document> 
25
         * 3. 通过游标遍历检索出的文档集合 
26
         * */  
27
         FindIterable<Document> findIterable = collection.find();  
28
         MongoCursor<Document> mongoCursor = findIterable.iterator();  
29
         while(mongoCursor.hasNext()){  
30
            System.out.println(mongoCursor.next());  
31
         }  
32
      
33
      }catch(Exception e){
34
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
35
      }
36
   }
37
}

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

Connect to database successfully
集合 test 选择成功
Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=100, by=Fly}}
3
 
1
Connect to database successfully
2
集合 test 选择成功
3
Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=100, by=Fly}}

更新文档

你可以使用 com.mongodb.client.MongoCollection 类中的 updateMany() 方法来更新集合中的文档。

代码片段如下:

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
         // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
         
         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
         System.out.println("Connect to database successfully");
         
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
         System.out.println("集合 test 选择成功");
         
         //更新文档   将文档中likes=100的文档修改为likes=200   
         collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));  
         //检索查看结果  
         FindIterable<Document> findIterable = collection.find();  
         MongoCursor<Document> mongoCursor = findIterable.iterator();  
         while(mongoCursor.hasNext()){  
            System.out.println(mongoCursor.next());  
         }  
      
      }catch(Exception e){
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
      }
   }
}
35
 
1
import org.bson.Document;
2
import com.mongodb.MongoClient;
3
import com.mongodb.client.FindIterable;
4
import com.mongodb.client.MongoCollection;
5
import com.mongodb.client.MongoCursor;
6
import com.mongodb.client.MongoDatabase;
7
import com.mongodb.client.model.Filters;
8
 
          
9
public class MongoDBJDBC{
10
   public static void main( String args[] ){
11
      try{   
12
         // 连接到 mongodb 服务
13
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
14
         
15
         // 连接到数据库
16
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
17
         System.out.println("Connect to database successfully");
18
         
19
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
20
         System.out.println("集合 test 选择成功");
21
         
22
         //更新文档   将文档中likes=100的文档修改为likes=200   
23
         collection.updateMany(Filters.eq("likes", 100), new Document("$set",new Document("likes",200)));  
24
         //检索查看结果  
25
         FindIterable<Document> findIterable = collection.find();  
26
         MongoCursor<Document> mongoCursor = findIterable.iterator();  
27
         while(mongoCursor.hasNext()){  
28
            System.out.println(mongoCursor.next());  
29
         }  
30
      
31
      }catch(Exception e){
32
         System.err.println( e.getClass().getName() + ": " + e.getMessage() );
33
      }
34
   }
35
}

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

Connect to database successfully
集合 test 选择成功
Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=200, by=Fly}}
3
 
1
Connect to database successfully
2
集合 test 选择成功
3
Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=200, by=Fly}}

删除第一个文档

要删除集合中的第一个文档,首先你需要使用com.mongodb.DBCollection类中的 findOne()方法来获取第一个文档,然后使用remove 方法删除。

代码片段如下:

import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class MongoDBJDBC{
   public static void main( String args[] ){
      try{   
         // 连接到 mongodb 服务
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );

         // 连接到数据库
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
         System.out.println("Connect to database successfully");

         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
         System.out.println("集合 test 选择成功");

         //删除符合条件的第一个文档  
         collection.deleteOne(Filters.eq("likes", 200));  
         //删除所有符合条件的文档  
         collection.deleteMany (Filters.eq("likes", 200));  
         //检索查看结果  
         FindIterable<Document> findIterable = collection.find();  
         MongoCursor<Document> mongoCursor = findIterable.iterator();  
         while(mongoCursor.hasNext()){  
           System.out.println(mongoCursor.next());  
         }  
           
      }catch(Exception e){
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
     }
   }
}
x
 
1
import org.bson.Document;
2
import com.mongodb.MongoClient;
3
import com.mongodb.client.FindIterable;
4
import com.mongodb.client.MongoCollection;
5
import com.mongodb.client.MongoCursor;
6
import com.mongodb.client.MongoDatabase;
7
import com.mongodb.client.model.Filters;
8
 
          
9
public class MongoDBJDBC{
10
   public static void main( String args[] ){
11
      try{   
12
         // 连接到 mongodb 服务
13
         MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
14
 
          
15
         // 连接到数据库
16
         MongoDatabase mongoDatabase = mongoClient.getDatabase("mycol");  
17
         System.out.println("Connect to database successfully");
18
 
          
19
         MongoCollection<Document> collection = mongoDatabase.getCollection("test");
20
         System.out.println("集合 test 选择成功");
21
 
          
22
         //删除符合条件的第一个文档  
23
         collection.deleteOne(Filters.eq("likes", 200));  
24
         //删除所有符合条件的文档  
25
         collection.deleteMany (Filters.eq("likes", 200));  
26
         //检索查看结果  
27
         FindIterable<Document> findIterable = collection.find();  
28
         MongoCursor<Document> mongoCursor = findIterable.iterator();  
29
         while(mongoCursor.hasNext()){  
30
           System.out.println(mongoCursor.next());  
31
         }  
32
           
33
      }catch(Exception e){
34
        System.err.println( e.getClass().getName() + ": " + e.getMessage() );
35
     }
36
   }
37
}

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

Connect to database successfully
集合 test 选择成功
 
1
Connect to database successfully
2
集合 test 选择成功

更多操作可以参考:http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/

参考文档:http://blog.csdn.net/ererfei/article/details/50857103





转载于:https://www.cnblogs.com/lantianxun/p/8550077.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值