MongoDB

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":"아이스크림"}}})