Первый шаг в использовании MongoDB - понять основные концепции MongoDB и модель данных (структура данных), зная, как данные хранятся. Фактически, MongoDB очень похож на MySQL, поэтому тем, кто знает MySQL, не будет никаких трудностей в изучении MongoDB.
Основные концепции MongoDB
База данных
База данных MongoDB - то же самое, что и база данных MySQL.
Коллекция
Коллекция MongoDB относится к коллекции документов, аналогично концепции таблицы в MySQL.
Документ
Документ MongoDB, аналогично строке данных в таблице MySQL, является структурой данных JSON, состоящей из нескольких полей, что делает структуру документа в MongoDB очень гибкой.
Поле
Поле документа MongoDB аналогично концепции поля в таблице MySQL, представляя конкретные данные для хранения, причем каждое поле имеет свой собственный тип данных.
Индекс
Индекс MongoDB похож на индекс MySQL и используется для повышения эффективности запросов.
Агрегация
Концепция агрегации в MongoDB аналогична анализу агрегации Group by/Count/Sum в MySQL и используется для статистического анализа данных.
Сравнение концепций между MongoDB и MySQL
MYSQL | MongoDB |
---|---|
База данных | База данных |
Таблица | Коллекция |
Строка | Документ |
Столбец | Поле документа |
Индекс | Индекс |
Агрегация (например, group by) | Агрегация |
По сути, концепции MongoDB могут соответствовать MySQL, поэтому MongoDB является наиболее похожей на реляционные базы данных (NoSQL).
Данные документа MongoDB
Документ представляет собой просто структуру JSON, состоящую из множества полей, каждое из которых имеет свой собственный тип данных. При разработке с MongoDB основное внимание уделяется проектированию структуры документа, аналогично тому, как основное внимание при использовании MySQL уделяется проектированию структуры таблиц.
Пример данных документа MongoDB:
{
"_id": "5cf0029caff5056591b0ce7d",
"firstname": "Jane",
"lastname": "Wu",
"address": {
"street": "1 Circle Rd",
"city": "Los Angeles",
"state": "CA",
"zip": "90404"
},
"hobbies": ["surfing", "coding"]
}
Такая структура данных может быть любой произвольно вложенной структурой JSON, которую не удастся достичь с помощью структуры таблиц MySQL. Поле _id
служит первичным ключом документа, и если вы не укажете определенное значение, MongoDB сгенерирует уникальное значение случайным образом.
Самое большое различие между структурой данных MongoDB и таблицами MySQL заключается в том, что MongoDB не требует предварительного определения структуры документа. С MongoDB вы можете напрямую вставлять JSON-данные в коллекцию, без необходимости предварительного определения схемы. Каждый раз, когда вы записываете JSON-данные в коллекцию MongoDB, формат может быть разным, позволяя добавлять или удалять поля по желанию.
Примечание: Хотя структура документа MongoDB достаточно гибкая и способна принимать изменчивые форматы данных для каждой записи, на практике структура данных внутри коллекции обычно является унифицированной. В противном случае, если формат каждой записи отличается внутри коллекции, ее обслуживание станет навеки кошмаром, так как каждый раз при извлечении данных вы не будете знать формат получаемых данных.