Самое простое в мире руководство по MongoDB |
26.03.2020 01:00 |
Автор: Кристин Джеквони (Kristin Jackvony) MongoDB – одна из наиболее популярных современных нереляционных баз данных. Ее гибкость, скорость и масштабируемость делают ее распространенным выбором для приложений, хранящих данные в JSON-формате. Установить ее и создать базу данных очень легко, однако язык запросов тут сильно отличается от языка запросов SQL. Когда я только начинала работать с MongoDB, меня раздражала документация ее языка запросов: в ней или пытались объяснить чересчур многое, или примеры были чересчур сложными. Я неоднократно раздраженно говорила "Да как мне просто-напросто сделать запрос 'select lastName from contacts where id = 3?!!' Из-за этого раздражения я и создала свое собственное руководство. В нем я приведу ряд простейших примеров запросов, к которым вы, возможно, привыкли в SQL. Установка MongoDB Эта статья посвящена именно запросам, поэтому я пропущу инструкцию по установке, и вместо этого отправлю вас сюда для MacOSX, и сюда для Windows. Когда вы закончите установку, то увидите командное окно Mongo. Создание базы данных Создать новую базу невероятно легко. Мы назовем нашу базу "tutorial". Чтобы создать ее, просто введите " use tutorial". Вы получите ответ " switched to db tutorial". Ура! Ваша база данных создана. Добавление документа Конечно, сейчас ваша БД абсолютно пуста. Давайте сделаем с этим что-нибудь и введем: db.tutorial.insertOne( { _id: 1, firstName: "Prunella", lastName: "Prunewhip" } ). Вы только что добавили ваш первый документ! Заметьте, что "документ" тут эквивалентен "записи" в базе данных SQL. У вашего документа есть id (который по традиции начинается с _), имя и фамилия. Запрос всех документов Давайте убедимся, что документ действительно добавлен, запросив его. db.tutorial.find() Вот что вы получите: { "_id" : 1, "firstName" : "Prunella", "lastName" : "Prunewhip" }. Пустая команда find() найдет все документы в базе данных. Сейчас у нас он всего один, поэтому один нам и показали. Добавление нескольких документов Чтобы добавить несколько документов одновременно, используйте команду InsertMany: db.tutorial.insertMany([ { _id: 2, firstName: "Joe", lastName: "Schmoe" }, { _id: 3, firstName: "Amy", lastName: "Smith" }, { _id: 4, firstName: "John", lastName: "Smith" }, { _id: 5, firstName: "Joe", lastName: "Bagadonuts" }, { _id: 6, firstName: "Carol", lastName: "Jones" }, { _id: 7, firstName: "Robert", lastName: "Johnson" } ]). Заметьте, что каждый документ обрамлен фигурными скобками, и документы разделены запятыми. Вы получите вот такой ответ: { "acknowledged" : true, "insertedIds" : [ 2, 3, 4, 5, 6, 7 ] }. Теперь в вашей базе семь записей. Если вы запросите все документы на этом этапе, используя db.tutorial.find(), то вы получите вот такой результат: { "_id" : 1, "firstName" : "Prunella", "lastName" : "Prunewhip" } Поиск всех документов с определенным значением Прошлый запрос по id всегда будет возвращать один документ, так как id уникален. Если вы хотите найти все документы, содержащие определенное значение, то это делается так: db.tutorial.find({ lastName: "Smith"}). Запрос единичного значения внутри одного документа Допустим, вам нужно найти фамилию из документа с id 3. Вот как это сделать: db.tutorial.find({ _id: 3}, {lastName:1, _id:0}). _id:0 тут приводится, чтобы уточнить, что вы не хотите видеть id в ответе – по умолчанию id всегда возвращается в ответах MongoDB. Возврат всех значений определенного поля Если вы хотите получить список всех фамилий в своей БД, то это делается так: db.tutorial.find({}, {lastName:1, _id:0}). Поиск вида "Начинается с…" MongoDB использует регулярные выражения для поиска по значениям полей. Чтобы найти все документы, в которых фамилии начинаются с S, сделайте так: db.tutorial.find({ lastName: /^S/}). Результат: { "_id" : 2, "firstName" : "Joe", "lastName" : "Schmoe" } Поиск с AND Если вы хотите найти документ с определенным именем и определенной фамилией, то вот как это сделать: db.tutorial.find( {$and: [{ lastName: "Smith" },{ firstName: "Amy"}]} ) Результат: { "_id" : 3, "firstName" : "Amy", "lastName" : "Smith" }. Поиск с IN Чтобы найти все документы с фамилиями Смит или Джонс, сделайте так: db.tutorial.find({lastName :{$in :["Smith","Jones"]}}). Результат: { "_id" : 3, "firstName" : "Amy", "lastName" : "Smith" } Обновление документа Если вы хотите изменить существующий документ, используйте команду Update. К примеру, для изменения фамилии в третьем документе на Jones введите вот что: db.tutorial.updateOne({_id: 3 }, {$set: {lastName: "Jones"}}). Результат: { "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }. Чтобы убедиться, что запись верно обновилась, используйте команду db.tutorial.find( { _id: 3 } ), которая вернет { "_id" : 3, "firstName" : "Amy", "lastName" : "Jones" }. Удаление документа И, наконец, вам может потребоваться удалить документ. Вот как это сделать: db.tutorial.deleteOne({_id: 4 }) Результат: { "acknowledged" : true, "deletedCount" : 1 }. Чтобы убедиться, что документ удален, прогоните db.tutorial.find(). Вот что вы увидите: { "_id" : 1, "firstName" : "Prunella", "lastName" : "Prunewhip" } Как можно видеть, документ с id 4 теперь отсутствует в базе. Это, конечно, не все, что можно сделать в MongoDB, но для начала достаточно. Можете также просмотреть предыдущую статью, где есть примеры работы с вложенными значениями в MongoDB. Надеюсь, что эта статья была полезной и помогла вам понять, как работает Mongo. Удачных запросов! |