簡體   English   中英

在java中將數據存儲到mongodb中

[英]store data into mongodb in java

我解析文件並檢索它們包含然后嘗試使用morphia將它們存儲在我的數據庫中,但是我有這個錯誤:

INFO: LoggerImplFactory set to org.mongodb.morphia.logging.jdk.JDKLoggerFactory
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/client/model/geojson/codecs/GeoJsonCodecProvider

這是我的主要內容:

finally {


                    Morphia morphia =new Morphia(); 
                    String mongo2 ="test";
                    CelluDAO cellDAO=new CelluDAO(MongoUtil.getMongo(),morphia,mongo2);
                    System.out.println("Connect to database successfully");

                    for (Cellu cel : data) {
                        System.out.println(cel.getT());
                        cellDAO.save(cel);
                    }


                     MongoUtil.getMongo().close();
                } 

這是我的班級CelluDAO:

public class CelluDAO extends BasicDAO<Cellu,String> {

    public CelluDAO (MongoClient mongoClient, Morphia morphia, String dbName) {
        super(mongoClient, morphia, dbName);
    }

public List<Cellu> findAll() {
    return ds.find(Cellu.class).asList();

}
public List<Cellu> findUnderID(int id){
    return ds.find(Cellu.class).filter("Id",id).order("Id").asList();
}

}

我的班級Mongoutil:

public class MongoUtil {
        private static final int port = 27017;
        private static final String host = "localhost";
        private static final String databaseName = "test";

        private static MongoClient mongo = null;
        private static MongoDatabase db = null;

        public static MongoClient getMongo() {
            if (mongo == null) {
                mongo = new MongoClient(host, port);
            }
            return mongo;
        }

        public static MongoDatabase getDB() {
            if (db == null) {
                if (mongo == null) {
                    mongo = getMongo();
                }
                db = mongo.getDatabase(databaseName);
            }
            return db;
        }

        public MongoCollection<Document> getCollection(String collection) {
            if (db == null) {
                db = getDB();
            }
            MongoCollection<Document> table = db.getCollection(collection);
            return table;
        }

    }

我做得對嗎? 有沒有更好的方法呢?

確保您在Java驅動程序的3.x行中使用了某些內容。 聽起來你使用的是2.13或2.14。

https://docs.oracle.com/javase/7/docs/api/java/lang/NoClassDefFoundError.html上的NoClassDefFoundError的Java文檔如下所示。

搜索的類定義在編譯當前正在執行的類時存在,但無法再找到該定義。

首先,確保MongoDB和Driver的版本相同。

嘗試使用MongoDB Java Driver verison 3.1或更高版本。 我在MongoDB Java文檔中看到了com.mongodb.client.model.geojson.codecs包 - http://api.mongodb.org/java/3.1 ,因為這不適用於3.0版本 - http:// api。 mongodb.org/java/3.0

因此,Java驅動程序可能會拋出您正在使用的版本的錯誤(即3.0.4)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM