Приложение Java не распознает мои коллекции в моих базах данных MongoDB.

Я создаю простое веб-приложение и пытаюсь подключить приложение к MongoDB. Вот класс, в котором я устанавливаю соединение.

открытый класс JavaMongoDBConnection {

public static void main(String[] args) {
    try {
    MongoClient mongoClient = null;

        mongoClient = new MongoClient();

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

    for(String dbName: databases) {
        System.out.println("Databases: " + dbName);

        DB db  = mongoClient.getDB(dbName);

        Set<String> collections = db.getCollectionNames();

        for(String colName : collections) {
            System.out.println("\t + Collection: "+colName);

        }

    }
    mongoClient.close();


    } catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

} }

Когда я запускаю этот класс как приложение Java, это мой результат

Базы данных: admin Базы данных: Budget Базы данных: config Базы данных: db Базы данных: локальные Базы данных: myTestDB

Однако, когда я захожу в терминал и запускаю следующие команды, вот мои результаты.

  1. показать базы данных

Ответ: администратор 0,000 ГБ бюджет 0,000 ГБ конфигурация 0,000 ГБ БД 0,000 ГБ локальная 0,000 ГБ myTestDB 0,000 ГБ

  1. использовать myTestDB

  2. показать коллекции

Ответ: Бюджет бюджета myCollection

Итак, почему бюджет, бюджет и моя коллекция не отображаются при запуске этого Java-приложения??


person CamMoore    schedule 23.05.2018    source источник


Ответы (1)


Если вы используете текущую версию Java-драйвера MongoDB (в настоящее время 3.7), используйте MongoDatabase вместо DB:

MongoClient mongoClient = new MongoClient();

for(String databaseName : mongoClient.listDatabaseNames()) {
    System.out.println("Database: " + databaseName);

    MongoDatabase db = mongoClient.getDatabase(databaseName);

    for(String colName : db.listCollectionNames()) {
        System.out.println("\t + Collection: " + colName);
    }
}

mongoClient.close();

Приведенный выше код должен иметь вывод, аналогичный следующему:

Database: admin
         + Collection: system.version
Database: config
         + Collection: system.sessions
Database: local
         + Collection: startup_log
Database: test
         + Collection: testcoll1
         + Collection: testcoll2
person kevinadi    schedule 23.05.2018