2017-09-26 168 views
0

我是mongo數據庫的新手,剛剛學習基礎知識。我想我的顯示當前數據庫的名稱:無法使用Mongo Java驅動程序創建數據庫

try { 
     // Creates a new instance of MongoDBClient and connect to localhost 
     // port 27017 
     MongoClient mongoClient = new MongoClient("localhost", 27017); 

     mongoClient.getDB("myMongoDB"); 

     List<String> listofDB= mongoClient.getDatabaseNames(); 

     for(String dbName : listofDB){ 
      System.out.println(dbName); 
     } 



    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

它打印出的唯一的數據庫是adminlocalmyMongoDB未出現。當我在外殼上輸入並輸入show databases時,myMongoDB也不會出現。我真的很困惑,因爲通過使用.getDB()方法,如果傳遞到該方法的字符串不是當前數據庫的名稱,然後蒙戈將創建一個名稱的數據庫.. here

我使用以下依賴:

  `<dependency> 
      <groupId>org.mongodb</groupId> 
      <artifactId>mongo-java-driver</artifactId> 
      <version>2.12.3</version> 
      </dependency>` 

回答

1

這將不打印myMongoDB,因爲它尚未創建。 您需要執行一些事務,如創建集合,將數據插入集合。然後它將顯示在該列表中。 只有選擇數據庫才能在mongo數據庫中創建數據庫。

由於mongodb的默認行爲是懶惰地創建數據庫,直到創建文檔插入。

你可以按照這個鏈接做使用Java驅動程序Mongo的一些操作: http://mongodb.github.io/mongo-java-driver/2.13/getting-started/quick-tour/

如果你想使用命令行比你可以按照這個鏈接創建集合: https://docs.mongodb.com/manual/reference/method/db.createCollection/

0

link中所述,getDB方法已被棄用。使用MongoClient.getDatabase(String databaseName)方法來創建。

當第一個文檔被保存到集合中時,MongoDB會隱式地創建一個集合。 createCollection()方法僅在將選項對象作爲參數傳遞給它時才顯式創建集合。通過link去進一步的信息

0
MongoClient mongoClient = new MongoClient(); 
MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator(); 
while(dbsCursor.hasNext()) { 
    System.out.println(dbsCursor.next()); 
} 

還要檢查你的dpath(因爲外殼沒有返回你的數據庫,可能是其不正道)

嘗試mongod --dbpath /your/path

此外,僅在將文檔插入到數據庫中的集合中才會實際創建數據庫,這將隱式地創建集合和數據庫。

相關問題