MongoDb 기본 쿼리

greenTea·2024년 5월 8일
0

1. 데이터베이스 및 컬렉션 생성

MongoDB에서 데이터는 컬렉션(Collection) 안에 저장됩니다. 데이터베이스(Database)는 컬렉션의 논리적인 그룹을 나타냅니다.

데이터베이스 생성

use my_database

컬렉션 생성

db.createCollection("users")

컬렉션의 경우 createCollection()을 이용해서 명시적으로 만들수도 있지만 그냥 insert만 해도 알아서 만들어집니다.

2. 문서 삽입(Insert)

MongoDB에서 데이터는 BSON(Binary JSON) 형식의 문서(document)로 저장됩니다.

db.users.insertOne({
    "name": "John",
    "age": 30,
    "city": "New York"
})

MongoDB가 BSON을 이용하는 이유는 더욱 빠르고 효율적으로 관리하기 위해서 이용하는 겁니다. 그렇다고 BSON으로 데이터를 작성할 필요 없이 JSON으로 작성하면 알아서 MongoDB가 처리해주기 때문에 JSON으로 작성하셔도 됩니다.

3. 문서 조회(Query)

MongoDB에서 데이터를 조회할 때는 find() 메서드를 사용합니다.

모든 문서 조회

db.users.find()

조건에 맞는 문서 조회

db.users.find({ "city": "New York" })

프로젝션

db.users.find({ "city": "New York" },{"city" :1})

find({필터 문},{프로젝션})의 형태로 작성하시면 됩니다. 필터를 통해 원하는 조건의 데이터를 가져올 수 있으며 프로젝션을 통해 원하는 필드의 값만을 가져올 수 있습니다.

프로젝션

db.users.find({ "city": "New York" },{"city" :1}).skip(1).limit(2)

페이징 처리의 경우는 위의 skip()과 limit()을 사용하면 됩니다. 그러나 주의할 점은 너무 많은 skip()을 사용하게 되면 느려지게 됩니다.(몽공DB는 skip을 위한 메타데이터를 저장하지 않기 때문에...) 그러므로 만약 많은 skip을 해야 한다면 다음과 같은 방법을 사용하는 것도 좋습니다.

프로젝션

var latest = null;
... find

while (cursor.hasNext()) {
  latest = cursor.next();
  //출력
}

var nextPage  = db.users.find({"num":{$gt:latest.num}});

가장 마지막에 쿼리한 값을 가지고 있다가 쿼리를 할때 해당 값을 넘겨준다면 빠르게 찾을 수 있습니다.

4. 문서 업데이트(Update)

MongoDB에서 문서를 업데이트할 때는 updateOne() 또는 updateMany() 메서드를 사용합니다.

db.users.updateOne(
    { "name": "John" },
    { $set: { "age": 31 } }
)

updateOne({필터 문},{변경 문})의 경우 find와 동작원리가 비슷합니다. 필터를 통해 원하는 데이터만을 찾아낸 후 두번째 {변경 문}을 통해 데이터를 변경합니다.

5. 문서 삭제(Delete)

MongoDB에서 문서를 삭제할 때는 deleteOne() 또는 deleteMany() 메서드를 사용합니다.

db.users.deleteOne({ "name": "John" })

deleteOne({필터 문}) 첫 번째 조건을 통해 원하는 데이터만을 삭제합니다.

profile
greenTea입니다.

0개의 댓글