몽고DB 자바
환경 구성
Java 프로그램에서 MongoDB를 사용하려면 Java 환경과 MongoDB JDBC 드라이버가 설치되어 있는지 확인해야 합니다.
이 장의 예제는 Mongo 3.x 이상을 기반으로 합니다.
이 사이트의 Java 튜토리얼을 참조하여 Java 프로그램을 설치할 수 있습니다. 이제 MongoDB JDBC 드라이버가 설치되어 있는지 확인해 보겠습니다.
먼저 mongo jar 패키지를 다운로드해야 합니다. 다운로드 주소는 http://mongodb.github.io/mongo-java-driver/입니다. 반드시 최신 버전을 다운로드하시기 바랍니다.
mongo-java-driver-3.2.2.jar이 필요합니다(적절한 버전을 찾으세요). 클래스 경로에 포함됩니다. .
국내 mongodb-driver jar 다운로드 주소: http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
데이터베이스에 연결
데이터베이스에 연결하려면 데이터베이스 이름을 지정해야 합니다. 지정된 데이터베이스가 없으면 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() ); } } }
이제 프로그램을 컴파일하고 실행한 후 데이터베이스에 연결하여 테스트해 보겠습니다.
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
이 예에서 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() ); } } }
컬렉션 만들기
com.mongodb.client에서 createCollection()을 사용할 수 있습니다. .MongoDatabase 클래스
컬렉션을 생성하기 위한 코드 조각은 다음과 같습니다.
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() ); } } }
위 프로그램을 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Connect to database successfully 集合创建成功
컬렉션 가져오기
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() ); } } }
위 프로그램을 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Connect to database successfully 集合 test 选择成功
문서 삽입
com.mongodb의 insertMany() 메서드를 사용할 수 있습니다. 문서를 삽입하는 client.MongoCollection 클래스
코드 조각은 다음과 같습니다.
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() ); } } }
컴파일 및 실행 위 프로그램의 출력은 다음과 같습니다.
Connect to database successfully 集合 test 选择成功 文档插入成功
모든 문서 검색
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() ); } } }
위 프로그램을 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Connect to database successfully 集合 test 选择成功 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() ); } } }
위 프로그램을 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Connect to database successfully 集合 test 选择成功 Document{{_id=56e65fb1fd57a86304fe2692, title=MongoDB, description=database, likes=200, by=Fly}}
첫 번째 문서 삭제
컬렉션의 첫 번째 문서를 삭제하려면 먼저 com.mongodb.DBCollection 클래스를 사용해야 합니다. findOne() 메서드를 사용하여 첫 번째 문서를 가져온 다음 제거 메서드를 사용하여 삭제합니다.
코드 조각은 다음과 같습니다.
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() ); } } }
위 프로그램을 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Connect to database successfully 集合 test 选择成功
자세한 작업은 다음을 참조하세요. http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
참조 문서: http://blog.csdn. net/ererfei/article/details/50857103