본문 바로가기

개발/db

[mongodb] MongoDB university - M101JS week2 1/2

$gt: greater than

$gte: greater than, equal

$lt: less than

$lte: less than, equal

ex) db.users.find({score: {$lte: 100}})


$regex: 해당 string 포함

$exists: 그 field가 존재 하는지

$type: 그 field타입이 무엇인지

ex) 

db.users.find({username: {$regex: 'a'}, email: { $exists: true}}): username에 a가 들어가면서 email 필드가 있을 때

db.users.find({username: {$type: 2}}) : username이 string인 것을 찾을 때


$or

ex) db.users.find({$or: [ {쿼리}, {쿼리}]})


$in: 배열에 있는 값중 하나라도 들어있으면

$all: 배열에 있는 모든 값이 일치해야만

ex) db.users.find({favorites: { $in: ['pizza', 'icecream']}, hobbies: { $all: ['running', 'swimming']} }) : 달리기, 수영은 꼭 포함해야 하며, 피자나 아이스크림을 좋아함

그 필드가 꼭 array가 아니어도 됨

예를들어 favorites: 'pizza' 여도 favorites: ['pizza', 'rice'] 여도 됨


count({쿼리}) : 결과 개수

find({쿼리}, /*option*/ {원하는 필드 설정 가능})


update({바꾸고 싶은 doc쿼리}, {수정할 내용, 안 쓴 filed는 버려짐})

ex) update({"username": "kim"}, {"age": "lee"}) : age만 남고 나머지 필드 discard


특정 필드만 수정하고 싶다면 두번째 argument에 $set 사용 

ex) update({"username": "kim"}, {$set: {"age": 10}})


특정 필드 삭제하고 싶다면 두번째 argument에 $unset command 사용

ex) update({"username": "kim"}, {$unset: {"age": 1}}) : age 필드 삭제됨

  

세번째 argument에 {upsert: true} 하면 새로운 doc 추가

ex) update({"username": "lee"}, {$set: {"age": 20, "hobby": "swimming"}}, {upsert: true})


multi doc에 새로운 filed를 추가 하고 싶으면 세번 째 arg에 {multi: true}

ex) update({수정할 쿼리}, {$set: {"city": "seoul"}}, {multi: true}) : 모든 doc이면 첫번째 arg를 {}로