MongoDB для чайников (как я)


Исполняемые файлы

  • https://www.mongodb.com/docs/manual/installation/
  • https://www.mongodb.com/try/download/shell

Основные команды

  • Подключитесь к локальному экземпляру MongoDB
mongosh
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Показать все базы данных
  • Показать все коллекции текущей базы данных
show dbs
show collections
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Переход к введенной базе данных
use <nombre_bd>
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Отображает вашу текущую БД
db
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Удалить текущий BD
db.dropDatabase()
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Создать коллекцию
db.createCollection(<Name>, Options)

db.createCollection(<Name>, {
   capped : true,
   size : sizeLimit,
   max : documentLimit,
   validator: { $and:
      [   { phone: { $type: "string" } },
          { email: { $regex: /@flares.com$/ } },
          { status: { $in: [ "Registered", "Unknown" ] } }
       ]
    }
})

db.createCollection( 'login', {
    validator: { $jsonSchema: {
        bsonType: "object",
        "additionalProperties": false,
       required: [ "email" ],
       properties: {
          email: {
             bsonType : "string",
             pattern : "@flares.com$",
             description: "string meets the given expression"
          },
          status: {
             enum: [ "registered", "Invalid" ],
             description: "status must be within enum values"
          }
       }
    } },
} )
Войдите в полноэкранный режим Выход из полноэкранного режима
  • Переименовать коллекцию
db.<db_name>.renameCollection(<new_name_collection>)
db.login.renameCollection(<newCollectionName>)
Войдите в полноэкранный режим Выход из полноэкранного режима

Создать

db.<collectionName>.<command>

  • insertOne collectionName.insertOne({document})
  • insertMany collectionName.insertMany([{document1},{document2},{ document3}….{ documentn}])

Создает один или несколько документов в коллекции

db.users.insert({
   name: 'Fernando',
   age: 35,
   interesting: ['tecnology, 'music', 'movies'],
   address: {
      city: 'Santiago',
      street: 'Columbus av.'
   }.
   birdDate: Date()
})
db.users.insertOne({ name: "Fernando"})
db.users.insertMany({ name: "Fernando"}, {name: "Elias"})
Войдите в полноэкранный режим Выход из полноэкранного режима

Читать

db.<collectionName>.<command>

  • найти()
  • find(<filterObject>)
  • find(<filterObject>, <selectObject>)
db.users.find().pretty()
db.users.find({ name: "Fernando"})
db.users.find({ email: "fernando@mail.com"}, {name: 1})
db.users.find({}, {email: 0})
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда показывает все документы в коллекции.
Второй показывает все документы, имя которых Фернандо.
Третий показывает только name документов, чей emailfernando@mail.com.
Четвертый отображает все документы, кроме поля email.

  • findOne(<filterObject>)
db.users.findOne({ name: "Fernando"})
Войдите в полноэкранный режим Выход из полноэкранного режима

Показывать только первый документ, соответствующий фильтру

  • countDocuments(<filterObject>)
db.users.countDocuments({ name: "Fernando"})
Войдите в полноэкранный режим Выход из полноэкранного режима

Возвращает количество документов, соответствующих фильтру


Обновление

db.<collectionName>.<command>

  • updateOne
  • updateMany
db.users.updateOne({ age: 20 }, { $set: { age: 21 } })
db.users.updateMany({ age: 12 }, { $set: { age: 15 } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первый обновляет возраст первого найденного документа, а второй обновляет все документы, соответствующие фильтру.

  • replaceOne
db.users.replaceOne({ age: 12 }, { name:"mi nombre", age: 13 })
Войдите в полноэкранный режим Выход из полноэкранного режима

Заменяет первый полный объект, соответствующий фильтру.


Удалить

db.<collectionName>.<command>

  • deleteOne
  • deleteMany
db.users.deleteOne({age: 10})
db.users.deleteMany({age: 10})
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда удаляет первый документ, соответствующий фильтру, а вторая удаляет все документы, соответствующие фильтру.


Фильтры

  • $eq (равно)
  • $ne (не равно)
db.users.find({ name: { $eq: "Fernando" } })
db.users.find({ name: { $ne: "Fernando" } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первый показывает все документы, чье name равно Fernando, а второй показывает все документы, чье name отличается.

  • $gt (больше чем)
  • $gte (больше или равно)
  • $lt (меньше, чем)
  • $lte (меньше или равно)
b.users.find({ age: { $gt: 12 } })
db.users.find({ age: { $gte: 15 } })

b.users.find({ age: { $lt: 12 } })
db.users.find({ age: { $lte: 15 } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда отображает документы с age больше 12, не включая его.
Второй показывает документы с àge больше 15, включая документы с 15.
Следующие два — те же самые, включая или исключая их из фильтра.

  • $in (include)
  • $nin (не включать)
db.users.find({ name: { $in: ["Fernando", "Jose"] } })
db.users.find({ name: { $nin: ["Fernando", "Jose"] } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда показывает документы, чье name находится в массиве, а вторая — все документы, чье name не находится в массиве.

  • и
  • $or
  • $not
db.users.find({ $and: [{ age: 12 }, { name: "Fernando" }] })
db.users.find({ $or: [{ age: 12 }, { name: "Fernando" }] })
db.users.find({ name: { $not: { $eq: "Fernando" } } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда показывает документы, соответствующие обоим фильтрам, вторая — только документы, соответствующие одному из фильтров, третья — меняет выборку в пределах фильтра.

  • $exist
db.users.find({ name: { $exists: true } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Отображает документы, в которых есть поле с именем name.

  • $expr
db.users.find({ $expr: { $gt: ["$nota1", "$nota2"] } })

Войдите в полноэкранный режим Выход из полноэкранного режима

Выполняет сравнение между различными полями, в примере показывает документы, у которых note1 больше, чем note2.


Модификаторы чтения

Форматный вывод

  • pretty()
db.users.find({ age: 10}).pretty();
Войдите в полноэкранный режим Выход из полноэкранного режима

Получение уникальных записей

  • distinct() collectionName.distinct(field,query)
db.users.distinct("name")
Войдите в полноэкранный режим Выход из полноэкранного режима

Можно добавлять в конце различных операций

  • сортировать
  • ограничение
  • пропустить
db.users.find().sort({ name: 1 })
db.users.find().limit(2)
db.users.find().skip(4)
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда сортирует документы в алфавитном порядке по имени.
Второй показывает только первые 2 документа.
Третья команда пропускает первые 4 результата


Комплексный объект обновления

  • $set
  • $inc
  • $rename
  • $unset
b.users.updateOne({ age: 12 }, { $set: { name: "jose" } })
b.users.updateOne({ age: 12 }, { $inc: { age: 2 } })
b.users.updateMany({}, { $rename: { age: "years" } })
db.users.updateOne({ age: 12 }, { $unset: { age: "" } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая команда обновляет name первого документа, который имеет age равный 12.
Второй увеличивает на 2 age первого документа, который имеет age равный 12.
Третий переименовывает поле age в years всех документов.
Четвертый удаляет поле age из первых документов с age равным 12

  • $push
  • $pull
b.users.updateMany({}, { $push: { friends: "John" } })
b.users.updateMany({}, { $pull: { friends: "Miguel" } })
Войдите в полноэкранный режим Выход из полноэкранного режима

Первая добавляет значение в массив friends, вторая удаляет значение , оба из всех документов.

Оцените статью
Procodings.ru
Добавить комментарий