Operator 공식 문서
0. 기본 DB 정보 조회
- use {database} : database 접속
- show collections : collection 보기
1. Insert
1.1. insertOne()
db.employees.insertOne({
name: "lake",
age: 21,
dept: "Database",
joinDate: new ISODate("2022-10-01"),
salary: 400000,
bonus: null
})
- 기본적인 Insert 쿼리
- employees라는 컬렉션에 name, age, dept 등을 field로 갖는 document를 삽입했다
- employees라는 컬렉션이 없으면 자동으로 생성해준다
쿼리 결과
1.2. insertMany()
db.employees.insertMany([
{
name: "ocean",
age: 45,
dept: "Network",
joinDate: new ISODate("1999-11-15"),
salary: 100000,
resignationDate: new ISODate("2002-12-23"),
bonus: null
},
{
name: "river",
age: 34,
dept: "DevOps",
isNegotitating: true
},
])
쿼리 결과
insertOne() vs insertMany()
- insertMany() 함수가 압도적으로 빠르다
- 2건 이상일 땐 그냥 insertMany()를 사용한다고 생각하면 된다
2. Update
2.1. updateOne() + $set, $unset
db.employees.updateOne(
{ name: "river" }, // query filter
{
$set: { // 값을 변경한다
salary: 350000,
dept: "Database",
joinDate: new ISODate("2022-12-31")
},
$unset: { // 값을 삭제한다
isNegotitating: ""
}
}
)
- 가장 처음은 쿼리 필터의 자리다
쿼리 결과
Before
After
2.2. updateMany() + $exists, $mul
db.employees.updateMany(
{ resignationDate: {$exists: false}, joinDate: {$exists: true} }, // query filter
{ $mul: {salary: Decimal128("1.1")} }
)
- $exists : 존재여부를 필터링
- $mul: multiple(곱셈)의 약자
- Decimal128 : 10진법으로 타입 지정 (1.1만 쓰면 소수점이 너무 길게 나옴)
쿼리 결과
Before
After
주의 : MongoDB는 field가 없더라도 null로 취급한다
- 위의 After에서 lake는 bonus 필드가 있고, river는 없다.
- 이런 상황에서 쿼리 필터에 { bonus: null } 로 작성하면 river 도 포함이 된다
- 따라서 특정 필드의 유무를 기준으로 쿼리 필터를 사용할 땐 $exists를 사용하도록 한다!
3. Delete
3.1. deleteOne()
db.employees.deleteOne({ name: "river" })
쿼리 결과
3.2. deleteMany()
db.employees.deleteMany({...});
- 위의 … 부분을 아무것도 채우지 않으면(쿼리 필터를 작성하지 않으면) Collection에 저장된 모든 Document를 삭제한다. 단, employees라는 Collection 자체는 남아있다.
3.3. drop()
db.employees.drop()
- 컬렉션을 자체를 삭제한다
4. Find
4.1. find()
1) 컬렉션 전체 조회
db.employees.find()
- 컬렉션 내 모든 도큐먼트 조회
2) Query filter 사용
db.employees.find(
{ name: "lake" } // query filter
)
- 쿼리 필터를 적용해서 조회할수도 있다
3) operator : $lte 사용
- $lte : Matches values that are less than or equal to a specified value.
db.employees.find(
{
age: { $lte: 25 } // age <= 21인 Document 조회
}
)
4) operator : $and 사용
db.employees.find(
{
age: { $lte: 60 },
dept: "Database"
}
)
또는
db.employees.find(
{
$and: [
{ age: { $lte: 60 } },
{ dept: "Database" }
]
}
)
- 위와 아래는 동일하게 작동한다
5) operator : $or, $gt 사용
db.employees.find(
{
$or: [
{ dept: "Network" }, // dept = "Network" 또는
{ salary: { $gt: 150000 } } // salary >= 150000
]
}
)
- $gt : greater than의 약자로 크거나 같다를 필터링 할 때 사용
6) operator : $in 사용
db.employees.find(
{ skills : {$in: ["java"]} } // query filter
)
- skills라는 필드는 배열 타입이며, 해당 배열 안에 “java”가 포함된 것을 조회함
쿼리 결과
4.2. findOne()
db.employees.findOne(
{ name: "lake" } // query filter
)
'Back-End > MongoDB' 카테고리의 다른 글
[MongoDB] MQL 기초 4 - 배열과 내장 Document를 다루는 방법 1 (Read) (0) | 2024.05.31 |
---|---|
[MongoDB] MQL 기초 3 - 유용한 CRUD 쿼리 함수 (0) | 2024.05.31 |
[MongoDB] MQL 기초 1 - Query Filter와 Operator (0) | 2024.05.31 |
[MongoDB] SQL vs MQL 비교 문서 (0) | 2024.05.31 |
[MongoDB] Replica Set Local에 구축하기 (0) | 2024.05.31 |