Java Web数据库开发实战(mongodb增删改查实例详解)

在上一篇中我们讨论了:mongodb索引创建、聚合查询、复制集、分片、创建备份和部署,到此为止我们已经把mongodb的基本操作学完了,现在我们将mongodb应用于JavaWeb项目实战,本节我们讨论Java连接mongodb实现增删改查(CRUD)。
一、安装mongodb jdbc驱动程序准备MongoDB JDBC驱动程序和Java,让我们看看一下如何安装MongoDB JDBC驱动程序。

  1. 你需要从下载jar:下载mongo.jar,请务必下载它的最新版本(或者使用maven或gradle)。
  2. 你需要将mongo.jar包含到类路径中。
二、Java连接到mongodb数据库连接数据库要指定数据库名称,若数据库不存在,MongoDB会自动创建它。
如下是Java连接到数据库的代码片段:
public class ConnectToDB { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); // 访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); System.out.println("凭证 ::"+ credential); } }

三、创建集合要创建集合,请使用com.mongodb.client. MongoDatabase的createCollection()方法,如下是创建集合的代码片段:
public class CreatingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); } }

四、获取或选择一个集合获取或选择一个集合使用com.mongodb.client. MongoDatabase类的getCollection()方法。
如下是获取/选择集合的程序:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); // 获取一个集合 MongoCollection< Document> collection = database.getCollection("myCollection"); System.out.println("成功获取集合!"); } }

五、插入文档插入文档使用com.mongodb.client. MongoCollection类的insert()方法。
如下是插入文档的代码片段:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); // 获取一个集合 MongoCollection< Document> collection = database.getCollection("myCollection"); System.out.println("成功获取集合!"); Document document = new Document("title", "MongoDB") .append("id", 1) .append("description", "database") .append("likes", 100) .append("url", "http://www.srcmini.com/mongodb/") .append("by", "once"); collection.insertOne(document); System.out.println("成功插入文档!"); } }

六、获取所有文档要从集合中获取所有文档,请使用com.mongodb.client. MongoCollection类的find()方法,此方法返回迭代器用于遍历。
如下是获取所有文档的程序:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); // 获取一个集合 MongoCollection< Document> collection = database.getCollection("myCollection"); System.out.println("成功获取集合!"); // 获取可迭代对象 FindIterable< Document> iterDoc = collection.find(); int i = 1; // 获取迭代器 Iterator it = iterDoc.iterator(); // 遍历所有文档 while (it.hasNext()) { System.out.println(it.next()); i++; } } }

七、更新文档【Java Web数据库开发实战(mongodb增删改查实例详解)】更新文档使用com.mongodb.client. MongoCollection类的updateOne()方法。
如下是获取第一个文档更新的程序:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); // 获取一个集合 MongoCollection< Document> collection = database.getCollection("myCollection"); System.out.println("成功获取集合!"); collection.updateOne(Filters.eq("id", 1), Updates.set("likes", 150)); System.out.println("成功更新文档..."); // 更新后获取文档 // 获取可迭代对象 FindIterable< Document> iterDoc = collection.find(); int i = 1; // 获取遍历器 Iterator it = iterDoc.iterator(); // 遍历所有文档 while (it.hasNext()) { System.out.println(it.next()); i++; } } }

八、删除文档删除文档使用com.mongodb.client. MongoCollection类的deleteOne()方法。
如下是删除文档的程序:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); // 获取一个集合 MongoCollection< Document> collection = database.getCollection("myCollection"); System.out.println("成功获取集合!"); // 删除文档 collection.deleteOne(Filters.eq("id", 1)); System.out.println("成功删除文档..."); // 删除后重新获取文档 // 获取可迭代对象 FindIterable< Document> iterDoc = collection.find(); int i = 1; // 获取迭代器 Iterator it = iterDoc.iterator(); // 遍历所有文档 while (it.hasNext()) { System.out.println("已插入的文档": "+i); System.out.println(it.next()); i++; } } }

九、删除集合要从数据库中删除一个集合,需要使用com.mongodb.client. MongoCollection类的drop()方法。
如下是删除集合的程序:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); //创建mongodb集合 database.createCollection("sampleCollection"); System.out.println("成功创建集合!"); // 获取一个集合 MongoCollection< Document> collection = database.getCollection("sampleCollection"); // 删除一个集合 collection.drop(); System.out.println("成功删除集合"); } }

十、列出所有集合列出数据库所有集合使用com.mongodb.client. MongoDatabase类的listCollectionNames()方法。
如下是列出数据库所有集合的程序:
public class selectingCollection { public static void main( String args[] ) {// 创建一个Mongo客户端 MongoClient mongo = new MongoClient( "localhost" , 27017 ); // 创建凭证 MongoCredential credential; credential = MongoCredential.createCredential("sampleUser", "myDb", "password".toCharArray()); System.out.println("成功连接到数据库!"); //访问数据库 MongoDatabase database = mongo.getDatabase("myDb"); System.out.println("成功创建集合"); for (String name : database.listCollectionNames()) { System.out.println(name); } } }

以上就Java连接mongodb数据库实现增删改查的内容,其余的MongoDB方法save()、limit()、skip()、sort()等会在后续教程中介绍。

    推荐阅读