2017-11-01 11 views
0

単純な接続を作成し、java(eclipse 4.7.1a)を使ってローカルのMongoDBインスタンスに文書を挿入しようとしています。 MongoDBは&で実行され、「コンパス」を介して操作を実行することもできます。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のバージョン:使用jarファイルに続きv3.4.9 。 bson 3.0.4.jar & mongo-java-driver-3.5.0.jar

なぜこのエラーが発生しているのですか?それがメインであなたのMongoDBのコードを入れて、再びそれを実行し、その後動作するかどうか、あなたのMongoDBコード実行のhelloシンプルな世界プログラム、

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

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

       } 
      } 

を使用する前に

答えて

1

あなたのコードが完全に働いています。場合は、最初のことを学ぶ必要がある "Eclipse IDEを使用する方法を?"データベースにジャンプする前に

コードの結果は次のとおりです。 enter image description here

ここでは、データベース内のデータの様子を示します。 enter image description here

+0

こんにちは。私はpl/sqlの男ですので、最近のことを試してみてください。あなたのアドバイスで私はメインと簡単なJavaコードでテストし、それが動作します。しかし、すぐに私がMongo DBクライアントオブジェクトを定義すると、エラーが戻ってきます。 MongoClient mongoClient =新しいMongoClient( "localhost"、27017);私が使用するjarファイルに関する問題はありますか? –

+0

Mongodb jarライブラリで問題が解決されない場合は、Mongodbライブラリをすべて削除し、ここからjarファイルをダウンロードしてください。[Mongodb](https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver) /3.4.2)その後、追加のjarファイルを追加しないでください。動作するはずです。 –

関連する問題