我是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();
}
它打印出来的唯一数据库是admin
和local
。 myMongoDB
没有出现。当我继续使用shell并输入show databases
时,myMongoDB
也不会出现。我真的很困惑,因为使用.getDB()
方法,如果传递给该方法的String不是当前数据库的名称,那么mongo将创建该名称的数据库.. here
我使用以下依赖项:
`<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.12.3</version>
</dependency>`
答案 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,在将文档插入数据库中的集合之前,实际上不会创建数据库,该集合将隐式创建集合和数据库。