Приложение Java не распознает мои коллекции в моих базах данных MongoDB. - PullRequest
0 голосов
/ 23 мая 2018

Я создаю простое веб-приложение и пытаюсь подключить приложение к 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 Базы данных: бюджет Базы данных: config Базы данных: db Базы данных: локальные базы данных: myTestDB

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

  1. show dbs

Ответ: администратор 0,000GB бюджет 0,000GB config 0,000GB db 0,000GB local 0,000GB myTestDB 0,000GB

используйте myTestDB

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

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

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

1 Ответ

0 голосов
/ 24 мая 2018

Если вы используете текущую версию драйвера MongoDB Java Driver (в настоящее время 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
...