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
}
  • Update Operators reference
  • Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ содСрТащий Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ обновлСния. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

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.