MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Проверете съществуването на колекция в MongoDB

1. Общ преглед

MongoDB е NoSQL база данни, която съхранява записите с данни като BSON документи в колекция. Можем да имаме множество бази данни и всяка база данни може да има една или повече колекции от документи.

За разлика от релационните бази данни, MongoDB създава колекцията с вмъкнатия документ без нужда от дефиниране на структура. В този урок ще научим различни начини за проверка на съществуването на колекция. Ще използваме collectionExists, createCollection, listCollectionNames, и брои метод за проверка на съществуването на колекцията.

2. Свързване с база данни

За да получим достъп до всякакви данни от колекция, първо трябва да настроим връзка с базата данни. Нека се свържем с базата данни MongoDB, която работи локално на нашата машина.

2.1. Създайте връзка с помощта на MongoClient

MongoClient  е Java клас, използван за установяване на връзка с екземпляра на MongoDB:

MongoClient mongoClient = new MongoClient("localhost", 27017);

Тук се свързваме с MongoDB, който работи на порт по подразбиране 27017 на локален хост.

2.2. Свържете се с база данни

Сега нека използваме MongoClient обект за достъп до базата данни. Има два метода за достъп до базата данни с помощта на MongoClient .

Първо, ще използваме getDatabase метод за достъп до baeldung база данни:

MongoDatabase database = mongoClient.getDatabase("baeldung");

Можем също да използваме getDB метод на Mongo Java драйвер за свързване към базата данни:

DB db = mongoClient.getDB("baeldung");

getDB  методът е отхвърлен, поради което не се препоръчва да се използва.

Досега установихме връзка с MongoDB с помощта на MongoClient и допълнително се свързахме с baeldung база данни.

Нека се потопим дълбоко в различни подходи, за да проверим съществуването на колекция в MongoDB.

3. Използване на DB Клас

Драйверът на MongoDB Java предоставя както синхронни, така и асинхронни извиквания на методи. За да се свържем с базата данни, просто трябва да посочим името на базата данни. Ако базата данни не присъства, MongoDB автоматично ще създаде такава.

колекция съществува методът може да се използва за проверка дали дадена колекция е налице или не:

MongoClient mongoClient = new MongoClient("localhost", 27017);
DB db = mongoClient.getDB("baeldung");
String testCollectionName = "student";
System.out.println("Collection Name " + testCollectionName + " " + db.collectionExists(testCollectionName));

Тук съществува колекция методът ще върне true ако колекцията съществува, в противен случай е false.

com.mongodb.DB API на MongoDB Java драйвера е остарял от версия 3.x, но все още е достъпен. Следователно DB class не се препоръчва да се използва за нов проект.

4. Използване на MongoDatabase Клас

com.mongodb.client.MongoDatabase е актуализиран API за Mongo 3.x и по-нови версии. За разлика от класа DB, класът MongoDatabase не предоставя никакъв специфичен метод за проверка на съществуването на колекция. Но има различни методи, които можем да използваме, за да постигнем желаните резултати.

4.1. Използване на createCollection Метод

createCollection метод създава нова колекция в MongoDB. Но можем също да го използваме, за да проверим дали колекция съществува или не:

String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
try {
    database.createCollection(testCollectionName);
} catch (Exception exception) {
    System.err.println("Collection:- "+testCollectionName +" already Exists");
}

Кодът по-горе ще създаде нова колекция „студент“ ако вече не присъства в базата данни. createCollection методът ще изведе изключение, в случай че колекцията вече съществува.

Този подход не се препоръчва, тъй като създава нова колекция в базата данни.

4.2. Използване на listCollectionNames Метод

listCollectionNames method изброява всички имена на колекции в базата данни. Следователно можем да използваме този метод, за да решим проблема със съществуването на колекция.

Нека сега да разгледаме примерен код на listCollectionNames метод с помощта на кода на драйвера на Java:

String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
boolean collectionExists = database.listCollectionNames()
  .into(new ArrayList()).contains(testCollectionName);
System.out.println("collectionExists:- " + collectionExists);

Тук повторихме списъка с имената на всички колекции в базата данни baeldung. За всяко събитие съпоставяме името на низа на колекцията с testCollectionName . Ще върне true при успешно съвпадение, false иначе.

4.3. Използване на брой Метод

Броят метод на MongoCollection отчита броя на наличните документи в колекция.

Като заобиколно решение можем да използваме този метод, за да проверим съществуването на колекцията. Ето фрагмента от Java код за същото:

String databaseName="baeldung";
MongoDatabase database = mongoClient.getDatabase(databaseName);
String testCollectionName = "student";
MongoCollection<Document> collection = database.getCollection(testCollectionName);
Boolean collectionExists = collection.count() > 0 ? true : false;
System.out.println("collectionExists:- " + collectionExists);
Boolean expectedStatus = false;
assertEquals(expectedStatus, collectionExists);

Този метод не работи, ако колекция съществува без никакви данни. В този случай той ще върне 0, но колекцията съществува с празни данни.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PHP Mongo Грешка при четене от сокет

  2. Може ли mongo да повиши данни от масива?

  3. MongoDB като база данни за времеви серии

  4. Mongodb $lookup Не работи с _id

  5. Не може да се свърже с MongoDB чрез node.js в Docker