Node.js - MongoDB Создание коллекции

Здравствуйте, будущие программисты! Сегодня мы отправляемся в увлекательное путешествие в мир Node.js и MongoDB. Как ваш доброжелательный соседский компьютерный учитель, я здесь, чтобы провести вас через процесс создания коллекций в MongoDB с использованием Node.js. Не волнуйтесь, если вы новички в программировании – мы будем двигаться шаг за шагом, и скоро вы будете создавать коллекции, как профи!

Node.js - MongoDB Create Collection

Что такое MongoDB?

Прежде чем мы углубимся в детали, давайте начнем с основ. MongoDB - это популярная NoSQL база данных, которая хранит данные в гибких, JSON-подобных документах. Представьте ее как огромный цифровой файловый шкаф, где вы можете хранить различную информацию, не беспокоясь слишком много о структуре.

Что такое коллекция?

В MongoDB коллекция resembles akin to a folder in that filing cabinet. It's where we group similar documents together. For example, if you're building a library database, you might have a collection for books, another for authors, and another for borrowers.

Настройка нашего окружения

Сначала нам нужно убедиться, что у нас установлены Node.js и MongoDB на нашем компьютере. Если вы еще не сделали этого, сделайте быстрый крюк на официальные веб-сайты и следуйте их руководствам по установке.

Once you're all set up, let's create a new project folder and initialize it:

mkdir mongodb-collection-tutorial
cd mongodb-collection-tutorial
npm init -y

Теперь установим драйвер MongoDB для Node.js:

npm install mongodb

Подключение к MongoDB

Хорошо, теперь начинается веселье! Создадим новый файл под названием app.js и начнем с подключения к нашей базе данных MongoDB:

const { MongoClient } = require('mongodb');

// URL подключения
const url = 'mongodb://localhost:27017';

// Имя базы данных
const dbName = 'myLibrary';

// Создание нового MongoClient
const client = new MongoClient(url);

// Подключение к серверу
async function connect() {
try {
await client.connect();
console.log('Successfully connected to the database');
const db = client.db(dbName);
return db;
} catch (error) {
console.error('Error connecting to the database:', error);
}
}

В этом коде мы устанавливаем подключение к нашему локальному серверу MongoDB. Мы используем localhost:27017, что является стандартным адресом для MongoDB. Мы также указываем имя базы данных, myLibrary. Не волнуйтесь, если база данных еще не существует – MongoDB создаст ее для нас при первом использовании.

Создание коллекции

Теперь, когда мы подключены, давайте создадим нашу первую коллекцию! Мы создадим коллекцию для книг в нашей библиотеке:

async function createCollection() {
const db = await connect();
try {
const result = await db.createCollection('books');
console.log('Collection created successfully:', result.namespace);
} catch (error) {
if (error.code === 48) {
console.log('Collection already exists');
} else {
console.error('Error creating collection:', error);
}
} finally {
await client.close();
}
}

createCollection();

Давайте разберем это:

  1. Мы используем метод createCollection, чтобы создать новую коллекцию под названием 'books'.
  2. Если коллекция создана успешно, мы логируем сообщение об успехе.
  3. Если возникает ошибка, мы проверяем, связана ли она с тем, что коллекция уже существует (код ошибки 48). Если да, мы логируем сообщение, что коллекция уже существует. Для любой другой ошибки мы логируем详细信息 об ошибке.
  4. Наконец, мы закрываем подключение к базе данных.

Добавление параметров к нашей коллекции

MongoDB позволяет указывать параметры при создании коллекции. Давайте создадим другую коллекцию с параметрами:

async function createCollectionWithOptions() {
const db = await connect();
try {
const options = {
capped: true,
size: 1000000,
max: 5000
};
const result = await db.createCollection('logs', options);
console.log('Collection created with options:', result.namespace);
} catch (error) {
console.error('Error creating collection with options:', error);
} finally {
await client.close();
}
}

createCollectionWithOptions();

В этом примере мы создаем коллекцию 'logs' с следующими параметрами:

  • capped: true - Это создает ограниченную коллекцию, которая имеет фиксированный размер.
  • size: 1000000 - Это устанавливает максимальный размер коллекции в 1 миллион байтов.
  • max: 5000 - Это устанавливает максимальное количество документов, которые может содержать коллекция, в 5000.

Эти параметры полезны для коллекций, которые имеют "rolling" природу, таких как лог-файлы, где вы хотите хранить только самые последние записи.

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

Иногда вам может понадобиться проверить, существует ли коллекция, перед тем как пытаться ее создать. Вот как вы можете это сделать:

async function checkCollectionExists(collectionName) {
const db = await connect();
try {
const collections = await db.listCollections({name: collectionName}).toArray();
if (collections.length > 0) {
console.log(`Collection ${collectionName} exists`);
} else {
console.log(`Collection ${collectionName} does not exist`);
}
} catch (error) {
console.error('Error checking collection:', error);
} finally {
await client.close();
}
}

checkCollectionExists('books');

Эта функция использует метод listCollections, чтобы проверить, существует ли коллекция с заданным именем. Если возвращаемый массив имеет длину больше 0, это означает, что коллекция существует.

Объединение всего в один скрипт

Теперь, когда мы узнали о создании коллекций, давайте объединим все в один скрипт:

const { MongoClient } = require('mongodb');

const url = 'mongodb://localhost:27017';
const dbName = 'myLibrary';
const client = new MongoClient(url);

async function connect() {
try {
await client.connect();
console.log('Successfully connected to the database');
return client.db(dbName);
} catch (error) {
console.error('Error connecting to the database:', error);
}
}

async function createCollections() {
const db = await connect();
try {
// Создание коллекции 'books'
await db.createCollection('books');
console.log('Books collection created successfully');

// Создание коллекции 'logs' с параметрами
const logOptions = { capped: true, size: 1000000, max: 5000 };
await db.createCollection('logs', logOptions);
console.log('Logs collection created successfully with options');

// Проверка существования коллекции 'authors' перед созданием
const collections = await db.listCollections({name: 'authors'}).toArray();
if (collections.length > 0) {
console.log('Authors collection already exists');
} else {
await db.createCollection('authors');
console.log('Authors collection created successfully');
}
} catch (error) {
console.error('Error in createCollections:', error);
} finally {
await client.close();
}
}

createCollections();

Этот скрипт объединяет все concepts мы узнали:

  1. Подключение к базе данных
  2. Создание простой коллекции ('books')
  3. Создание коллекции с параметрами ('logs')
  4. Проверка существования коллекции перед созданием ('authors')

Заключение

Поздравляю! Вы только что сделали свои первые шаги в мир MongoDB и Node.js. Мы узнали, как подключаться к базе данных MongoDB, создавать коллекции, добавлять параметры к коллекциям и проверять существование коллекций. Этоfundamental skills, которые будут полезны вам по мере продолжения вашего пути в управлении базами данных с использованием MongoDB.

Remember, practice makes perfect. Try creating different types of collections, experiment with various options, and don't be afraid to make mistakes – that's how we learn!

Here's a table summarizing the main methods we've used:

Method Description
MongoClient.connect() Подключается к серверу MongoDB
db.createCollection() Создает новую коллекцию
db.listCollections() Список существующих коллекций

Keep coding, keep learning, and most importantly, have fun! Until next time, happy databasing!

Credits: Image by storyset