2023. 9. 7. 17:17ㆍ카테고리 없음
cursor 변수 저장해서 쓸 수 있는 기능
ex)
var cursor = db.col3.find()
이러면 cursor만 입력해도 db.col3.find()가 실행됨
cursor에도 옵션을 더 붙힐수가 있는데
cursor.next()
{ _id: ObjectId("64f924f0649ac7e94c04428d"), a: 20 }
이렇게 다음 배열 값이 조회가 가능하다
cursor.toArray
toArray는 내가 조회한 배열의 다음값부터 끝값까지 배열 전체를 불러온다
그리고 cursor는 10분이 지나면 자동으로 초기화가 되는데 선언시에 옵션을 주면 이 기능을 비활성화 할 수 있다.
ex)
var cursor = db.col3.find().noCursorTimeout()
<수정>
replaceOne은
홍길동이라는 이름을 가진 컬렉션을 찾아서 수정 한다.
db.col2.replaceOne({
name:"홍길동"
},
{name:"신비아파트",age:600,hobby:"귀신놀이"}
)
updateOne도 replaceOne이랑 기능은 비슷한데 재정의 할 부분에 $set을 해준다.
db.col2.updateOne({
name:"신비아파트"
},
{$set:{name:"신비아파트2",age:300,hobby:"귀신놀이2"}}
)
updateOne은 upsert:true 라는 옵션을 통해
"타요" 라는 이름이 없으면 그냥 추가해 버린다.
upsert는 update와 insert를 한번에 하는 옵션이다.
db.col2.updateOne({
name:"타요"
},
{$set:{name:"타요",age:3,hobby:"운전"}},{upsert:true}
)
그리고 set대신에 inc를 넣으면 값을 기존의 값에다가 더해버린다
db.col2.updateOne({
name:"타요"
},
{$inc:{age:3}},{upsert:true}
)
mul은 기존값에다가 곱해버린다.
db.col2.updateOne({
name:"타요"
},
{$mul:{age:3}},{upsert:true}
)
rename은 필드명을 바꾼다
db.col2.updateOne({
name:"타요"
},
{$rename:{age:"old"}},{upsert:true}
)
이렇게 쓰면 age는 old로 바껴서
{
"_id": {
"$oid": "64f928f1450721fcd788f13d"
},
"name": "타요",
"hobby": "운전",
"old": 18
}
이런식으로 뜨게 된다.
max와 min 옵션이 있는데
db.col2.updateOne({
name:"타요"
},
{$max:{old:20}},{upsert:true}
)
max는 기존의 값보다 새로 정의할 숫자가 높으면 그것으로 바뀌고 낮으면 바뀌지 않는다
min은 반대로 기존 값보다 높으면 바뀌지 않고 낮으면 바뀐다.
<추가>
추가에는 push와 addToSet이 있다.
둘의 차이는 push는 똑같은 값이 있어도 계속 추가 할 수있고 addToSet은 같은 값이있으면 추가하지 않는다.
db.col2.updateOne({name:"핑크퐁"},
{$push:{"etc":{"likefood":"아이스크림"}}})
<삭제>
삭제에는 pull을 사용 하면 된다.
db.col2.updateOne({name:"핑크퐁"},
{$pull:{"etc":{"likefood":"아이스크림"}}})