간단한 연결을 만들고 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의 코드를 넣고 다시 실행 작동하는 경우
안녕하세요 Joy, Thx 의견입니다. 나는 pl/sql 사람이므로 물건을 시험해보고 있습니다. 귀하의 조언에 나는 메인과 간단한 자바 코드로 테스트하고 그것을 작동합니다. 하지만 곧 Mongo DB 클라이언트 객체를 정의하면 오류가 다시 발생합니다. MongoClient mongoClient = new MongoClient ("localhost", 27017); 내가 사용하는 jar 파일에 문제가 있습니까? –
Mongodb jar 라이브러리에 문제가있는 것 같습니다. Mongodb 라이브러리를 모두 제거하고 여기에서 jar 파일을 다운로드하십시오. [Mongodb] (https://mvnrepository.com/artifact/org.mongodb/mongo-java-driver) /3.4.2) 이후에 추가로 jar를 추가하지 않는다는 것을 기억하면 작동 할 것이다. –