小智 14
是的,您可以获取现有数据库的列表.从Java驱动程序中,您可以执行类似的操作,以获取在localhost上运行的mongod服务器上的数据库名称
Mongo mongo = new Mongo( "127.0.0.1", 27017 );
List<String> databaseNames = mongo.getDatabaseNames();
Run Code Online (Sandbox Code Playgroud)
这相当于mongo shell"show dbs"命令.我相信所有驱动程序中都存在类似的方法.
对于因该方法已弃用/不可用而来到这里的任何人getDatabaseNames();,以下是获取现有数据库列表的新方法:
MongoClient mongoClient = new MongoClient();
MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator();
while(dbsCursor.hasNext()) {
System.out.println(dbsCursor.next());
}
Run Code Online (Sandbox Code Playgroud)
这是验证是否找到数据库的方法:
public Boolean databaseFound(String databaseName){
MongoClient mongoClient = new MongoClient(); //Maybe replace it with an already existing client
MongoCursor<String> dbsCursor = mongoClient.listDatabaseNames().iterator();
while(dbsCursor.hasNext()) {
if(dbsCursor.next().equals(databaseName))
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
从外壳程序中,如果要显式检查数据库是否存在:
db.getMongo().getDBNames().indexOf("mydb");
Run Code Online (Sandbox Code Playgroud)
如果“ mydb”不存在,将返回“ -1”。
要从外壳程序使用它:
if [ $(mongo localhost:27017 --eval 'db.getMongo().getDBNames().indexOf("mydb")' --quiet) -lt 0 ]; then
echo "mydb does not exist"
else
echo "mydb exists"
fi
Run Code Online (Sandbox Code Playgroud)