MongoDB Java

环境配置

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

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


连接数据库

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

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

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到 mongodb 服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. }catch(Exception e){
  23. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  24. }
  25. }
  26. }

现在,让我们来编译运行程序并创建数据库test。

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

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

  1. $javac MongoDBJDBC.java
  2. $java -classpath ".:mongo-2.10.1.jar" MongoDBJDBC
  3. Connect to database successfully
  4. Authentication: true

如果你使用的是Window系统,你可以按以下命令来编译执行程序:

  1. $javac MongoDBJDBC.java
  2. $java -classpath ".;mongo-2.10.1.jar" MongoDBJDBC
  3. Connect to database successfully
  4. Authentication: true

如果用户名及密码正确,则Authentication 的值为true。


创建集合

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

代码片段如下:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到 mongodb 服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. DBCollection coll = db.createCollection("mycol");
  23. System.out.println("Collection created successfully");
  24. }catch(Exception e){
  25. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  26. }
  27. }
  28. }

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

  1. Connect to database successfully
  2. Authentication: true
  3. Collection created successfully

获取集合

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

代码片段如下:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到 mongodb 服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. DBCollection coll = db.createCollection("mycol");
  23. System.out.println("Collection created successfully");
  24. DBCollection coll = db.getCollection("mycol");
  25. System.out.println("Collection mycol selected successfully");
  26. }catch(Exception e){
  27. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  28. }
  29. }
  30. }

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

  1. Connect to database successfully
  2. Authentication: true
  3. Collection created successfully
  4. Collection mycol selected successfully

插入文档

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

代码片段如下:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到 mongodb 服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. DBCollection coll = db.getCollection("mycol");
  23. System.out.println("Collection mycol selected successfully");
  24. BasicDBObject doc = new BasicDBObject("title", "MongoDB").
  25. append("description", "database").
  26. append("likes", 100).
  27. append("url", "//www.baidu.com/mongodb/").
  28. append("by", "baidu.com");
  29. coll.insert(doc);
  30. System.out.println("Document inserted successfully");
  31. }catch(Exception e){
  32. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  33. }
  34. }
  35. }

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

  1. Connect to database successfully
  2. Authentication: true
  3. Collection mycol selected successfully
  4. Document inserted successfully

检索所有文档

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

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

代码片段如下:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到 mongodb 服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. DBCollection coll = db.getCollection("mycol");
  23. System.out.println("Collection mycol selected successfully");
  24. DBCursor cursor = coll.find();
  25. int i=1;
  26. while (cursor.hasNext()) {
  27. System.out.println("Inserted Document: "+i);
  28. System.out.println(cursor.next());
  29. i++;
  30. }
  31. }catch(Exception e){
  32. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  33. }
  34. }
  35. }

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

  1. Connect to database successfully
  2. Authentication: true
  3. Collection mycol selected successfully
  4. Inserted Document: 1
  5. {
  6. "_id" : ObjectId(7df78ad8902c),
  7. "title": "MongoDB",
  8. "description": "database",
  9. "likes": 100,
  10. "url": "//www.baidu.com/mongodb/",
  11. "by": "baidu.com"
  12. }

更新文档

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

代码片段如下:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到Mongodb服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到你的数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. DBCollection coll = db.getCollection("mycol");
  23. System.out.println("Collection mycol selected successfully");
  24. DBCursor cursor = coll.find();
  25. while (cursor.hasNext()) {
  26. DBObject updateDocument = cursor.next();
  27. updateDocument.put("likes","200")
  28. coll.update(updateDocument);
  29. }
  30. System.out.println("Document updated successfully");
  31. cursor = coll.find();
  32. int i=1;
  33. while (cursor.hasNext()) {
  34. System.out.println("Updated Document: "+i);
  35. System.out.println(cursor.next());
  36. i++;
  37. }
  38. }catch(Exception e){
  39. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  40. }
  41. }
  42. }

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

  1. Connect to database successfully
  2. Authentication: true
  3. Collection mycol selected successfully
  4. Document updated successfully
  5. Updated Document: 1
  6. {
  7. "_id" : ObjectId(7df78ad8902c),
  8. "title": "MongoDB",
  9. "description": "database",
  10. "likes": 200,
  11. "url": "//www.baidu.com/mongodb/",
  12. "by": "baidu.com"
  13. }

删除第一个文档

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

代码片段如下:

  1. import com.mongodb.MongoClient;
  2. import com.mongodb.MongoException;
  3. import com.mongodb.WriteConcern;
  4. import com.mongodb.DB;
  5. import com.mongodb.DBCollection;
  6. import com.mongodb.BasicDBObject;
  7. import com.mongodb.DBObject;
  8. import com.mongodb.DBCursor;
  9. import com.mongodb.ServerAddress;
  10. import java.util.Arrays;
  11.  
  12. public class MongoDBJDBC{
  13. public static void main( String args[] ){
  14. try{
  15. // 连接到Mongodb服务
  16. MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
  17. // 连接到你的数据库
  18. DB db = mongoClient.getDB( "test" );
  19. System.out.println("Connect to database successfully");
  20. boolean auth = db.authenticate(myUserName, myPassword);
  21. System.out.println("Authentication: "+auth);
  22. DBCollection coll = db.getCollection("mycol");
  23. System.out.println("Collection mycol selected successfully");
  24. DBObject myDoc = coll.findOne();
  25. coll.remove(myDoc);
  26. DBCursor cursor = coll.find();
  27. int i=1;
  28. while (cursor.hasNext()) {
  29. System.out.println("Inserted Document: "+i);
  30. System.out.println(cursor.next());
  31. i++;
  32. }
  33. System.out.println("Document deleted successfully");
  34. }catch(Exception e){
  35. System.err.println( e.getClass().getName() + ": " + e.getMessage() );
  36. }
  37. }
  38. }

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

  1. Connect to database successfully
  2. Authentication: true
  3. Collection mycol selected successfully
  4. Document deleted successfully

你还可以使用 save(), limit(), skip(), sort() 等方法来操作MongoDB数据库。