CRUD операции MongoDB

Создание документа

db.books.insertOne(
  {
    title: "gRPC: запуск и эксплуатация облачных приложений. Go и Java для Docker и Kubernetes", 
    author: "Касун Индрасири", 
    year: 2020
  }
)
 
{
  acknowledged: true,
  insertedId: ObjectId("635988799c0531ba95d3586d")
}

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

db.books.insertMany(
  [
    {title:"Go: идиомы и паттерны проектирования",author:"Боднер Джон","year":2022},
    {title:"Высоконагруженные приложения. Программирование, масштабирование, поддержка",author:"Клеппман Мартин",year:2021}
  ]
)

Поиск документов

Query

// Найти все документы
db.books.find()
// Найти документы по совпадению конкретного поля
db.books.find({year: 2021})
// Найти документы по условию на кокретное поле
db.books.find({year: {$gte: 2021}})
// Найти документы по условию на кокретное поле и вернуть первый
db.books.findOne({year: {$gte: 2021}})
// Найти документа по одному ИЛИ по второму условию.
db.books.find({$or:[{year:{$gte: 2021}},{author: "Касун Индрасири"}]})

Projection

db.books.findOne({year: {$gte: 2021}},{ title:1, _id: 0 })
db.books.findOne({year: {$gte: 2021}},{ title:0, _id: 0 })

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

db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)

updateOne

db.books.updateOne(
  {
  title: "Высоконагруженные приложения. Программирование, масштабирование, поддержка"
  },
  {$set: {rating: 5}}
)
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 1,
  modifiedCount: 1,
  upsertedCount: 0
}

updateMany

db.books.updateMany(
  {rating: null},
  {$set:
    {rating: 3}
  }
)
{
  acknowledged: true,
  insertedId: null,
  matchedCount: 2,
  modifiedCount: 2,
  upsertedCount: 0
}
  • Разные операторы в MongoDB по разному обрабатывают значение null. Подробнее в документации.

replaceOne

db.books.replaceOne(
  {author: 'Ньюмен Сэм'},
  {
    title:"Создание микросервисов",
    author: "Ньюмен Сэм",
    year: 2016,
    rating:3
  },
  {upsert:true}
)
  • Пример притянут за уши и показывает в основном создание документа в рамках замены. Но можно так же и обновить или вставить.
    • upsert - разрешает вставить если не найден результат.

MongoDB. Презентация - презентация по MongoDB в рамках курса HSE.