Backend study

Mongo db의 Array정보의 find,update,delete 실습

Daejeong Kim 2021. 8. 10. 22:06

# 하나 추가

> db.user.insertOne({uid: "uid1", name: "name1", email: "email1"})
> db.user.find({}, {_id: 0})
{ "uid" : "uid1", "name" : "name1", "email" : "email1" }

# db 배열에 아이템 하나 추가하기

> db.user.updateOne({uid: "uid1"}, { $push: { db: {did: "did1", name: "db1"} } })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.user.find({}, {_id: 0})
{ "uid" : "uid1", "name" : "name1", "email" : "email1", "db" : [ { "did" : "did1", "name" : "db1" } ] }

# db 배열에 아이템  여러개 추가하기

> db.user.updateOne(
  {uid: "uid1"}, 
  { $push: 
    { 
      db: { 
        $each: [ 
          {did: "did2", name: "db2"},
          {did: "did3", name: "db3"}
        ] 
      }
    }
  })
  
  > db.user.find({}, {_id: 0})
{ "uid" : "uid1", "name" : "name1", "email" : "email1", "db" : [ { "did" : "did1", "name" : "db1" }, { "did" : "did2", "name" : "db2" }, { "did" : "did3", "name" : "db3" } ] }

# db안에 db3인 요소만 제거

> db.user.updateOne(
   {uid: "uid1"},
   { $pull: {
      db: { did: "did3" }
     }
   })
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
> db.user.find({}, {_id: 0})
{ "uid" : "uid1", "name" : "name1", "email" : "email1", "db" : [ { "did" : "did1", "name" : "db1" }, { "did" : "did2", "name" : "db2" } ] }

# db안에 did2인 요소의 name을 수정하기
Update Arrays in a Document — Node.js (mongodb.com)

> db.user.updateOne(
  {uid: "uid1", "db.did": "did2"},
  { $set: { "db.$.name": "name22" } }
  )
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

> db.user.find({}, {_id: 0})
{ "uid" : "uid1", "name" : "name1", "email" : "email1", "db" : [ { "did" : "did1", "name" : "db1" }, { "did" : "did2", "name" : "name22" } ] }
>

# array에 매치된 document 찾기

> db.user.find({
  "db.did": "did1"
})


{ "_id" : ObjectId("611361f9bef2364fbcaf7d3f"), "uid" : "uid1", "name" : "name1", "email" : "email1", "db" : [ { "did" : "did1", "name" : "db1" }, { "did" : "did2", "name" : "name22" } ] }