2017-11-01 23 views
0

간단한 연결을 만들고 java (eclipse 4.7.1a)를 사용하여 로컬 MongoDB 인스턴스에 문서를 삽입하려고합니다. MongoDB는 &이며 "Compass"를 통해 작업을 수행 할 수 있습니다.Eclipes를 통해 MongoDB & Java 연결하기

  package com; 
      import com.mongodb.MongoClient; 
      import com.mongodb.WriteConcern; 
      import com.mongodb.DB; 
      import com.mongodb.DBCollection; 
      import com.mongodb.BasicDBObject; 
      import com.mongodb.DBObject; 
      import com.mongodb.DBCursor; 
      import java.net.UnknownHostException; 
      import java.util.Date; 
      import java.util.List; 
      import java.util.Arrays; 

      public class connectToDB { 
       public static void main(String args[]) { 

      try{ 

      // To connect to mongodb server 
      MongoClient mongoClient = new MongoClient("localhost" , 27017          
     ); 

      // Now connect to your databases 
      DB db = mongoClient.getDB("test"); 
      System.out.println("Connect to database successfully"); 

      // if collection doesn't exists, MongoDB will create it for you  
      DBCollection coll = db.getCollection("testCollection"); 
      System.out.println("Collection coll selected successfully"); 

      // insert 
      List<Integer> books = Arrays.asList(27464, 747854); 
      DBObject documents = new BasicDBObject("_id", "jo") 
             .append("name", "Jo Bloggs") 
             .append("address", new BasicDBObject("street", "123 Fake St") 
                     .append("city", "Faketon") 
                     .append("state", "MA") 
                     .append("zip", 12345)) 
             .append("books", books); 
      coll.insert(documents); 
      System.out.println("Document added to Collection coll successfully"); 

      // update 
      BasicDBObject query = new BasicDBObject(); 
      query.put("name", "Xo"); 

      BasicDBObject newDocument = new BasicDBObject(); 
      newDocument.put("name", "Jo Bloggs-updated"); 

      BasicDBObject updateObj = new BasicDBObject(); 
      updateObj.put("$set", newDocument); 

      coll.update(query, updateObj); 
      System.out.println("Document updated to Collection coll successfully"); 

      // find - search 
      BasicDBObject searchQuery1 = new BasicDBObject(); 
      searchQuery1.put("name", "mkyong"); 
      DBCursor cursor = coll.find(searchQuery1); 
      System.out.println("Selection from Collection coll done successfully"); 
      while (cursor.hasNext()) { 
       System.out.println(cursor.next()); 
      } 

      // delete 
      BasicDBObject searchQuery2 = new BasicDBObject(); 
      searchQuery2.put("name", "Xo"); 
      coll.remove(searchQuery2); 
      System.out.println("Document deleted from Collection mycol2 successfully"); 

      }catch(Exception e){ 
      System.err.println(e.getClass().getName() + ": " + e.getMessage()); 
      } 
     } 

}

하지만 실행될 때, 이클립스 오류를 다음과 같이 끝납니다.

Nov 01, 2017 2:19:31 AM com.mongodb.diagnostics.logging.JULLogger log 
INFO: Cluster created with settings {hosts=[localhost:27017], mode=SINGLE,     
requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', 
maxWaitQueueSize=500} 
Exception in thread "main" java.lang.NoSuchMethodError: 
org.bson.BsonDocument.clone()Lorg/bson/BsonDocument; 
at com.mongodb.connection.ClientMetadataHelper. 
createClientMetadataDocument(ClientMetadataHelper.java:159) 
at com.mongodb.connection.ClientMetadataHelper. 
createClientMetadataDocument(ClientMetadataHelper.java:149) 
at com.mongodb.connection.InternalStreamConnectionFactory.<init> 
(InternalStreamConnectionFactory.java:37) 
at com.mongodb.connection.DefaultClusterableServerFactory. 
create(DefaultClusterableServerFactory.java:58) 
at com.mongodb.connection.BaseCluster.createServer(BaseCluster.java:359) 
at com.mongodb.connection.SingleServerCluster.<init> 
(SingleServerCluster.java:52) 
at com.mongodb.connection.DefaultClusterFactory. 
createCluster(DefaultClusterFactory.java:147) 
at com.mongodb.Mongo.createCluster(Mongo.java:726) 
at com.mongodb.Mongo.createCluster(Mongo.java:720) 
at com.mongodb.Mongo.<init>(Mongo.java:290) 
at com.mongodb.Mongo.<init>(Mongo.java:285) 
at com.mongodb.Mongo.<init>(Mongo.java:281) 
at com.mongodb.MongoClient.<init>(MongoClient.java:186) 
at com.mongodb.MongoClient.<init>(MongoClient.java:163) 
at com.mongodb.MongoClient.<init>(MongoClient.java:153) 
at com.connectToDB.main(connectToDB.java:25) 

MongoDB를 버전 : v3.4.9 jar 파일에 따라 사용. bson 3.0.4.jar & mongo-java-driver-3.5.0.jar

왜이 오류가 발생했는지에 관해 나를 도와 줄 수 있습니까? 당신이 당신의 MongoDB의 코드는 간단한 인사 세계 프로그램을 실행 사용하기 전에 그 다음 주에 MongoDB의 코드를 넣고 다시 실행 작동하는 경우

답변

1

귀하의 코드는 완벽하게

 public class connectToDB { 
      public static void main(String args[]) { 

        System.out.println("Hello world"); 

       } 
      } 

을 위해 노력하고 있습니다. 만약 작동하지 않는다면 "Eclipse IDE 사용법"을 배워야한다. 당신이 데이터베이스에 뛰어 들기 전에.

다음은 코드 결과입니다. enter image description here

여기에 데이터가 데이터베이스에서 어떻게 보이는지 보여줍니다. enter image description here

+0

안녕하세요 Joy, Thx 의견입니다. 나는 pl/sql 사람이므로 물건을 시험해보고 있습니다. 귀하의 조언에 나는 메인과 간단한 자바 코드로 테스트하고 그것을 작동합니다. 하지만 곧 Mongo DB 클라이언트 객체를 정의하면 오류가 다시 발생합니다. MongoClient mongoClient = new MongoClient ("localhost", 27017); 내가 사용하는 jar 파일에 문제가 있습니까? –

+0

Mongodb jar 라이브러리에 문제가있는 것 같습니다. Mongodb 라이브러리를 모두 제거하고 여기에서 jar 파일을 다운로드하십시오. [Mongodb] (https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver) /3.4.2) 이후에 추가로 jar를 추가하지 않는다는 것을 기억하면 작동 할 것이다. –