MongoDB - Автоматическая последовательность: Пособие для начинающих
Привет, будущая coding суперзвезда! ? Сегодня мы отправимся в увлекательное путешествие в мир MongoDB и узнаем о Автоматических Последовательностях. Не волнуйтесь, если вы никогда не писали ни строчки кода раньше - я буду вашим доброжелательным проводником, и мы будем идти шаг за шагом. К концу этого руководства вы будете поражены тем, на что вы способны!
Что такое Автоматическая Последовательность?
Прежде чем мы углубимся, давайте поймем, что такое Автоматическая Последовательность. Представьте, что вы организовываете的大型 вечеринку, и вы хотите присвоить каждому гостю уникальный номер по мере их arrival. Вы начинаете с 1, затем 2, 3 и так далее. Вот что делает Автоматическая Последовательность в базах данных - она автоматически присваивает уникальный, возрастающий номер каждому новому record.
Теперь, MongoDB не имеет встроенной функции автоматического увеличения, как некоторые другие базы данных. Но не волнуйтесь! Мы собираемся learn, как создать свою own. Это как быть магом и создавать свою own заклинание. Круто, правда?
Использование Коллекции Счетчиков
Наш первый трюк в создании Автоматической Последовательности - использование чего-то叫做 Коллекция Счетчиков. Представьте это как special блокнот, где мы отслеживаем наши numbers.
Шаг 1: Создание Коллекции Счетчиков
Сначала нам нужно создать наш special блокнот. На языке MongoDB, мы создадим новую коллекцию под названием "counters".
db.createCollection("counters")
Шаг 2: Вставка Документа Счетчика
Теперь добавим страницу в наш блокнот для specific последовательности. Мы назовем ее "userId".
db.counters.insert(
{
_id: "userId",
seq: 0
}
)
Этот код создает документ в нашей коллекции counters. Поле _id
установлено в "userId" (наша name последовательности), а seq
равен 0 (наша начальная цифра).
Шаг 3: Использование findAndModify для Получения Следующей Последовательности
Вот где происходит магия! Мы будем использовать special операцию MongoDB под названием findAndModify
, чтобы получить следующий номер в нашей последовательности.
function getNextSequence(name) {
var ret = db.counters.findAndModify(
{
query: { _id: name },
update: { $inc: { seq: 1 } },
new: true
}
);
return ret.seq;
}
Давайте разберем это:
-
query: { _id: name }
находит наш документ "userId". -
update: { $inc: { seq: 1 } }
увеличивает значениеseq
на 1. -
new: true
говорит MongoDB возвращать обновленный документ.
Шаг 4: Использование Последовательности в Вашей Коллекции
Теперь, когда вы хотите вставить нового пользователя с автоматическим увеличением ID, вы можете сделать это:
db.users.insert(
{
_id: getNextSequence("userId"),
name: "Sarah Connor",
age: 29
}
)
Каждый раз, когда вы запускаете этот код, он будет использовать новый, увеличенный ID. Магия, правда?
Создание JavaScript Функции
Теперь, когда мы понимаем основы, давайте создадим более robust JavaScript функцию для обработки наших потребностей автоматического увеличения.
function getNextSequence(db, sequenceName) {
const sequenceDocument = db.collection("counters").findOneAndUpdate(
{ _id: sequenceName },
{ $inc: { sequence_value: 1 } },
{ returnDocument: "after", upsert: true }
);
return sequenceDocument.sequence_value;
}
Эта функция делает несколько cool вещей:
- Она использует
findOneAndUpdate
, что похоже наfindAndModify
, но более modern. - Опция
upsert: true
означает, что она создаст последовательность, если она не существует. -
returnDocument: "after"
обеспечивает получение обновленного значения.
Использование JavaScript Функции
Теперь давайте put нашу новую функцию в action!
Пример 1: Создание Нового Пользователя
const db = client.db("myDatabase");
const userId = await getNextSequence(db, "userId");
const result = await db.collection("users").insertOne({
_id: userId,
name: "John Doe",
email: "[email protected]"
});
console.log(`New user created with id: ${userId}`);
В этом примере мы создаем нового пользователя с автоматическим увеличением ID. Это как давать каждому новому пользователю VIP номер на нашей вечеринке!
Пример 2: Создание Нового Продукта
const productId = await getNextSequence(db, "productId");
const result = await db.collection("products").insertOne({
_id: productId,
name: "Awesome Gadget",
price: 99.99
});
console.log(`New product added with id: ${productId}`);
Смотрите, как мы используем ту же функцию, но с different name последовательности? Это как иметь несколько party lines, каждая со своим own системой нумерации!
Бонус: Таблица Методов
Вот quick reference таблица методов, которые мы использовали:
Метод | Описание |
---|---|
createCollection |
Создает новую коллекцию |
insert |
Вставляет новый документ в коллекцию |
findAndModify |
Найдет документ и modifies его |
findOneAndUpdate |
Modern версия findAndModify |
insertOne |
Вставляет один документ в коллекцию |
Заключение
Поздравления! Вы только что learn, как create и использовать Автоматические Последовательности в MongoDB. Помните, это как быть организатором вечеринки, обеспечивая каждому уникальный номер. Эта skill будет полезна при создании приложений, которые требуют уникальных, возрастающих ID.
Практика делает perfect, так что не бойтесь экспериментировать с этими conceptами. Before you know it, вы будете создавать сложные операции с базой данных, как про! Keep coding, keep learning, и, что самое главное, получайте удовольствие! ?????
Credits: Image by storyset