프로그래밍-Web(96)
-
[이슈] 조건에 맞는 element 지우기
pull operatore를 사용한다. 이때 Document는 itemList:[{object}.... ] 의 형태로 구성되어있다. 따라서 내부 key를 이용해 조건을 찾으면, 해당 조건을 포함하고 있는 element가 빠진다. 이때 multi 옵션을 설정해주어야, 일치하는 모든 element를 제거할 수 있다. 종종 pullAll과 헷갈리는데, pullAll은 Document를 multi로 수정하는 것이 아니고, 조건에 해당하는 값만 빼내는 것이다. 예시의 경우 itemId만 pull된다.
2021.03.03 -
[이슈] MongoDB의 Transaction Limit Time
1분이다. 따라서 하나의 session객체에 포함된 트랜젝션들의 총 처리시간은 1분이 넘어가면 안된다. 멍청하게 aggregate를 포함한 많은 쿼리에 session을 공유하다가 계속 timeout 에러가 발생했다. 이러한 이슈에 대비하기 위해, 단순히 find해오는 쿼리에는 같은 session을 공유해주지 않는 것이 좋겠다. 물론 update한 데이터를 다시 find해와서 가공하는 경우는 적절하게 session을 분배해야 한다.
2021.02.26 -
[정리] MongoDB의 Transaction과 session문제
aggregate 쿼리에 session을 달아주지 않아 API가 서로 다른 트랜젝션에서 움직이는 문제가 생겼다. 기존 쿼리가 session객체를 쿼리 옵션에 실어서 주는 반면 aggregation은 전달하는 방법이 조금 다르다. option 메소드를 사용한다. 무튼 이건 그냥 실수. 중요한건 아니고. 트랜잭션은 논리적으로 하나의 작업으로 처리되는 쿼리들의 모음을 말한다 보통 commit과 rollback으로 나뉘어, 변경 후 상태를 유지하며 트랜잭션을 종료하거나, 이상이 있을 경우 이전 상태로 돌려놓은 후 트랜잭션을 종료한다 트랜잭션 과정에서는 '세션'이라는 개념을 사용하는데, 얘는 DB관련 작업을 수행 시작부터 종료까지의 기간을 말한다. 우리가 특정 쿼리를 DB에 보낸다면, DB 접속부터 수행한 후 쿼..
2021.02.25 -
[aggregate] project로 filter 하기
match 전에 사용해도 상관없다 이 예시의 경우는 result를 lookup의 결과물로 받아서, 결과물에 대한 filtering을 위해 dot command를 사용했다
2021.02.24 -
[이슈] 원하는 field만 가져오기
두번째 인자에 원하는 필드 지정해주기
2021.02.24 -
[aggregate] aggregate에서 match시 regex 활용
특정 string이 포함된 document를 찾고싶은 경우 match command의 변수에 regex라는 옵션을 달아준다 그러면 해당 변수로 검색해서 일치하는 모든 도큐먼트를 셀렉트해온다
2021.02.24