无法使用Mongo Java驱动程序创建数据库

时间:2017-09-26 15:44:54

标签: java mongodb

我是mongo DB的新手,现在只是学习基础知识。我正在尝试显示当前数据库的名称:

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没有出现。当我继续使用shell并输入show databases时,myMongoDB也不会出现。我真的很困惑,因为使用.getDB()方法,如果传递给该方法的String不是当前数据库的名称,那么mongo将创建该名称的数据库.. here

我使用以下依赖项:

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

4 个答案:

答案 0 :(得分:2)

这不会打印myMongoDB,因为它尚未创建。 您需要执行一些事务,例如创建集合,将数据插入集合。 然后它将显示在该列表中。 只选择数据库不会在mongo DB中创建数据库。

由于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/

答案 1 :(得分:0)

您是否尝试手动创建数据库然后运行代码?在这种情况下,我不认为myMongoDB存在。要在shell中创建一个use myMongoDB

编辑:您还必须在数据库中至少放入一个集合才能创建它。 https://www.tutorialspoint.com/mongodb/mongodb_create_database.htm

答案 2 :(得分:0)

link中所述,getDB方法已被弃用。请改用MongoClient.getDatabase(String databaseName)方法来创建。

当第一个文档保存到集合中时,MongoDB会隐式创建一个集合。 createCollection()方法仅显式创建集合,并且仅当选项对象作为参数传递给它时。浏览link了解更多信息

答案 3 :(得分:0)

import React from 'react';
import ReactDOM from 'react-dom';
import selbox from './selbox';

class Liste extends React.Component {
 constructor(props) {
    super(props);
       this.state = {};
  }

 componentDidMount(){}

 render() {
    return(<selbox sel='["4","6"]'  fields='[{"name":"field1","id":"1"},{"name":"field2","id":"2"},{"name":"field3","id":"3"},{"name":"field4","id":"4"},{"name":"field5","id":"5"}]' />);
  }
}


ReactDOM.render(
  <Liste />,
  document.getElementById('gb_28338201')
);

同时检查你的dpath(因为shell没有返回你的数据库,可能不是正确的路径)

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

同样FYI,在将文档插入数据库中的集合之前,实际上不会创建数据库,该集合将隐式创建集合和数据库。