MongoDB Java


在本章中,我们将学习如何设置MongoDB CLIENT。

安装


在Java程序中开始使用MongoDB之前,需要确保在计算机上设置了MongoDB CLIENT和Java。你可以检查Java教程以在计算机上安装Java。现在,让我们检查如何设置MongoDB CLIENT。

  • 你需要下载罐子mongodb-driver-3.11.2.jar及其依赖项mongodb-driver-core-3.11.2.jar。。确保下载这些jar文件的最新版本。

  • 你需要将下载的jar文件包含到类路径中。

连接到数据库


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

以下是连接数据库的代码段:

import com.mongodb.client.MongoDatabase; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
        System.out.println("Credentials ::"+ credential);
    }
}

现在,让我们编译并运行上面的程序以创建我们的数据库myDb,如下所示。

$javac ConnectToDB.java 
$java ConnectToDB

执行后,上述程序将为你提供以下输出。

Connected to the database successfully 
Credentials ::MongoCredential{
    mechanism = null,
    userName = 'sampleUser',
    source = 'myDb',
    password = <hidden>,
    mechanismProperties = {}
}

创建一个集合


要创建一个集合,使用com.mongodb.client.MongoDatabase类的createCollection()方法。

以下是创建集合的代码片段:

import com.mongodb.client.MongoDatabase; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
      
        //创建一个集合
        database.createCollection("sampleCollection");
        System.out.println("Collection created successfully");
    }
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully 
Collection created successfully

获取/选择集合


要从数据库中获取/选择一个集合,使用com.mongodb.client.MongoDatabase类的getCollection()方法。

以下是获取/选择集合的程序:

import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import org.bson.Document; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
      
        //创建一个集合
        System.out.println("Collection created successfully");
        //检索集合
        MongoCollection<Document> collection = database.getCollection("myCollection");
        System.out.println("Collection myCollection selected successfully");
    }
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully 
Collection created successfully 
Collection myCollection selected successfully

插入文档


要将文档插入MongoDB,使用com.mongodb.client.MongoCollection类的insert()方法。

以下是插入文档的代码段:

import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import com.mongodb.MongoClient;
public class InsertingDocument {
	public static void main( String args[] ) {
	
	//创建一个Mongo客户
	MongoClient mongo = new MongoClient( "localhost" , 27017 );
	
	//访问数据库
	MongoDatabase database = mongo.getDatabase("myDb");
	
	//创建一个集合
	database.createCollection("sampleCollection");
	System.out.println("Collection created successfully");
	
	//检索集合
	MongoCollection<Document> collection = database.getCollection("sampleCollection");
	System.out.println("Collection sampleCollection selected successfully");
	Document document = new Document("title", "MongoDB")
	.append("description", "database")
	.append("likes", 100)
	.append("url", "http:// www.newbiego.com/mongodb/“)
	.append("by", "newbiego point");
	
	//将文档插入集合
	collection.insertOne(document);
	System.out.println("Document inserted successfully");
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully 
Collection sampleCollection selected successfully 
Document inserted successfully

检索所有文档


要从集合中选择所有文档,使用com.mongodb.client.MongoCollection类的find()方法。此方法返回一个游标,因此你需要迭代此游标。

以下是选择所有文档的程序:

import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.bson.Document;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
public class RetrievingAllDocuments {
	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("Connected to the database successfully");
		
		//访问数据库
		MongoDatabase database = mongo.getDatabase("myDb");
		
		//检索集合
		MongoCollection<Document> collection = database.getCollection("sampleCollection");
		System.out.println("Collection sampleCollection selected successfully");
		Document document1 = new Document("title", "MongoDB")
		.append("description", "database")
		.append("likes", 100)
		.append("url", "http:// www.newbiego.com/mongodb/“)
		.append("by", "newbiego point");
		Document document2 = new Document("title", "RethinkDB")
		.append("description", "database")
		.append("likes", 200)
		.append("url", "http:// www.newbiego.com/rethinkdb/“)
		.append("by", "newbiego point");
		List<Document> list = new ArrayList<Document>();
		list.add(document1);
		list.add(document2);
		collection.insertMany(list);
		//获取可迭代对象
		FindIterable<Document> iterDoc = collection.find();
		int i = 1;
		//获取迭代器
		Iterator it = iterDoc.iterator();
		while (it.hasNext()) {
			System.out.println(it.next());
			i++;
		}
	}
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully
Collection sampleCollection selected successfully
Document{{_id=5dce4e9ff68a9c2449e197b2, title=MongoDB, description=database, likes=100, url=http:// www.newbiego.com/mongodb/,by = newbiego point}}
Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http:// www.newbiego.com/rethinkdb/,由= newbiego point}}

更新文档


要更新集合中的文档,使用com.mongodb.client.MongoCollection类的updateOne()方法。

以下是选择第一个文档的程序:

import com.mongodb.client.FindIterable; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import com.mongodb.client.model.Filters; 
import com.mongodb.client.model.Updates; 
import java.util.Iterator; 
import org.bson.Document;  
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class UpdatingDocuments { 
   
    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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
        //检索集合
        MongoCollection<Document> collection = database.getCollection("sampleCollection");
        System.out.println("Collection myCollection selected successfully");
        collection.updateOne(Filters.eq("title", 1), Updates.set("likes", 150));
        System.out.println("Document update successfully...");
      
        //更新后检索文档
        //获取可迭代对象
        FindIterable<Document> iterDoc = collection.find();
        int i = 1;
        //获取迭代器
        Iterator it = iterDoc.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
            i++;
        }
    }
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully
Collection myCollection selected successfully
Document update successfully...
Document{{_id=5dce4e9ff68a9c2449e197b2, title=MongoDB, description=database, likes=100, url=http:// www.newbiego.com/mongodb/,by = newbiego point}}
Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http:// www.newbiego.com/rethinkdb/,由= newbiego point}}

删除文档


要从集合中删除文档,需要使用com.mongodb.client.MongoCollection类的deleteOne()方法。

以下是删除文件的程序:

import com.mongodb.client.FindIterable; 
import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase; 
import com.mongodb.client.model.Filters;  
import java.util.Iterator; 
import org.bson.Document; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class DeletingDocuments { 
   
    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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
        //检索集合
        MongoCollection<Document> collection = database.getCollection("sampleCollection");
        System.out.println("Collection sampleCollection selected successfully");
        //删除文件
        collection.deleteOne(Filters.eq("title", "MongoDB"));
        System.out.println("Document deleted successfully...");
      
        //更新后检索文档
        //获取可迭代对象
        FindIterable<Document> iterDoc = collection.find();
        int i = 1;
        //获取迭代器
        Iterator it = iterDoc.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
            i++;
        }
    }
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully 
Collection sampleCollection selected successfully 
Document deleted successfully...
Document{{_id=5dce4e9ff68a9c2449e197b3, title=RethinkDB, description=database, likes=200, url=http:// www.newbiego.com/rethinkdb/,由= newbiego point}}

删除集合


要从数据库中删除集合,需要使用com.mongodb.client.MongoCollection类的drop()方法。

以下是删除集合的程序:

import com.mongodb.client.MongoCollection; 
import com.mongodb.client.MongoDatabase;  
import org.bson.Document;  
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class DropingCollection { 
   
    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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
      
        //创建一个集合
        System.out.println("Collections created successfully");
        //检索集合
        MongoCollection<Document> collection = database.getCollection("sampleCollection");
        //删除集合
        collection.drop();
        System.out.println("Collection dropped successfully");
    }
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully 
Collection sampleCollection selected successfully 
Collection dropped successfully

列出所有集合


要列出数据库中的所有集合,需要使用com.mongodb.client.MongoDatabase类的listCollectionNames()方法

以下是列出数据库的所有集合的程序:

import com.mongodb.client.MongoDatabase; 
import com.mongodb.MongoClient; 
import com.mongodb.MongoCredential;  
public class ListOfCollection { 
   
    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("Connected to the database successfully");
      
        //访问数据库
        MongoDatabase database = mongo.getDatabase("myDb");
        System.out.println("Collection created successfully");
        for (String name : database.listCollectionNames()) {
            System.out.println(name);
        }
    }
}

在编译时,以上程序为你提供以下结果:

Connected to the database successfully 
Collection created successfully 
myCollection 
myCollection1 
myCollection5

其余的MongoDB方法save()、limit()、skip()、sort()等等的工作方式与后续教程中说明的相同。