Шпаргалка по MongoDB (cheatsheet)

1389
Шпаргалка по MongoDB (cheatsheet)

Шпаргалка по MongoDB, часто используемые команды MongoDB для разработчиков.

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

В этом посте я расскажу о нескольких командах MongoDB, которые чаще всего используются разработчиками.

Операции с базами данных

1. Show All Databases

show dbs

2. Show current Database

db

3. Create or switch to new Database

use hashnode

4. Delete Database

db.dropDatabase()

Коллекции

1. Show All Collections of Current Database

show collections

2. Create new collection

db.createCollection('posts')

Create Documents

1. Insert One document

db.posts.insertOne(
   {title: "blog post title", body: "blog post content"}
)

или

db.posts.insert(
   {title: "blog post title", body: "blog post content"}
)

2. Insert Multiple document

db.posts.insert( [ 
    {title: "blog post 1 title", body: "blog post 1 content"},
    {title: "blog post 2 title", body: "blog post 2 content"},
])

Read Documents

1. Find One document

db.posts.findOne()

2. Find Multiple documents

db.posts.find()
/* returns a cursor - show 20 results - "it" to display more */

3. Find Multiple documents with formatted json

db.posts.find().pretty()
/* returns a cursor - show 20 results - "it" to display more */

4. Find documents by field value.

db.posts.find({'title' : 'blog 1 title'})

Обновление документов

1. Update one

db.posts.updateOne({"_id": 1}, {$set: {"title": 'updated title'}})

2. Update Multiple

/* update only specific fields */ 
db.posts.update({"category": "technology"}, {$set: {"category": 'computer science'}})

3. Upsert complete Row

db.posts.update({ '_id' : 1 },
{
  title: 'Post one',
  body: 'New body for post 1',
},
{
  upsert: true
})

4. Increment Field Value

db.posts.update({ "_id": 1 },
{
  $inc: {
    views: 5
  }
})

Удаление документов

1. Delete

db.posts.remove({ title: 'Post 1' })

Сортировка

Fetch results by sorting on field.

# ascending order
db.posts.find().sort({ title: 1 }).pretty()

# descending order
db.posts.find().sort({ title: -1 }).pretty()

Limit and Offset

Fetch results by pagination.

/* Skip 3 results*/
db.posts.find({}).skip(10)

/* Fetch only 3 results*/
db.posts.find({}).limit(3)

/* Sort by title , Skip first 10 results, fetch only next 3 documents*/
db.posts.find({}).sort({"title": 1}).skip(10).limit(3)

Добавление и удаление индекса

1. Add Index

/* Create Index on single field */
db.posts.createIndex({"title": 1})  

/* Create compound Index */
db.posts.createIndex({"title": 1, "date": 1})

2. Drop Index

db.posts. dropIndex("title_1")

Range Queries

Find documents by range query

/* find posts where views are greater than 50 */
db.posts.find({'views' : { '$gt' : 50 }})

/* find posts where views are greater than or equal to 50 */
db.posts.find({'views' : { '$gte' : 50 }})

/* find posts where views are less than 50 */
db.posts.find({'views' : { '$lt' : 50 }})

/* find posts where views are less than or equal to 50 */
db.posts.find({'views' : { '$lte' : 50 }})

1. Create Text Index on field

db.posts.createIndex({content: "text"})

2. Search by Text

db.posts.find({
  $content: {
    $search: "post content"
    }
})