MongoDB - помогите определить, существует ли коллекция или нет - PullRequest
1 голос
/ 08 марта 2020
DB database = mongo.getDB("pluginlicenser");
if(!database.collectionExists("licenses")){
    System.out.println("Collections: " + database.getCollectionNames());
    System.out.println("Creating new license collection...\nstarting up...");
    database.createCollection("licenses", new BasicDBObject());
}else{
    System.out.println("licenses collection already exists...\nloading details.");
}

Если я запускаю свою программу в первый раз без существующей коллекции, она создает коллекцию, называемую «лицензии»; когда я запускаю его второй раз, моя программа думает, что коллекция не существует, и пытается создать ее, хотя я ясно вижу ее в компасе MongoDB. Я не знаю почему ...

MongoDB Compass: https://prnt.sc/rd4ssa

1 Ответ

0 голосов
/ 09 марта 2020

Похоже, вы используете API из прошлого; Вы можете рассмотреть возможность использования более нового драйвера MongoDB Java и использовать его методы. Например:

MongoClient mongoClient = MongoClients.create("mongodb://localhost/");
MongoDatabase database = mongoClient.getDatabase("test");
List<String> collectionNames = database.listCollectionNames()
                                        .into(new ArrayList<>());

if (collectionNames.contains("newColl")) {    
    System.out.println("Collection exits...");
}
else {
    System.out.println("Collection doesn't exit, creating new...");
    // code to create collection, etc.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...