목록2019/01 (4)
미니옵빠의 code stubs
MongoDB aggregate + unwind + out 조합에서 duplicate ID 오류를 만날 경우 projection 시 _id 를 없애면 됨. $out 으로 생성되는 신규 collection 의 PK 로 기존 문서의 _id 가 입력되다보니, unwind 로 array field 가 deconstructs 되었을 때 (left join 처럼) 중복 키가 발생됨. 그래서 _id 를 제거해 버리면, 신규 collection 내 신규 _id 가 생성되어 중복 오류가 사라짐 예) 기존 _id -> id 로 대체하고, _id 필드는 지움 .aggregate([{ $project: { id: '$_id', _id: 0, }},{ $unwind: { ... }},{ $out: 'tempCollection'..
MongoDB 사용 시, 데이터 추출을 위해 mongoexport 를 활용 1. aggregate 사용하지 못함가장 기본적인 export 도구이기 때문. 이럴 땐 aggregate 의 $out 기능을 활용하여"집계 결과를 신규 컬렉션에 저장" > "해당 컬렉션을 mongoexport" 로 추출 이라는 절차로 진행2.6+ 이상에서만 가능 Ref: https://stackoverflow.com/questions/16468602/mongoexport-aggregate-export-to-a-csv-file 2. ID/PW 입력 시 특수문자 escaping uri 나 host+id+pw 조합에서, 비밀번호 등에 @, $, single quote 등이 있을 경우 "server returned error on SAS..
mongoDB 에서 aggregate 후 sort 를 할 때 요런 오류 메시지를 만날 때가 있음 MongoDB : Sort exceeded memory limit of 104857600 bytes 아래와 같이 쿼리 내 allowDiskUse 옵션을 추가하여 해결 가능 db.getCollection('hello').aggregate( [ { $project: { "name": 1, "field_length": {$strLenCP: { $ifNull: ["name", "" ]}} } }, {$sort: {"field_length": -1}}, {$project: {"field_length": 0}}, ], {allowDiskUse: true} ) 참고로 Robo3T 에서 Replica Set 에 쿼리 시, ..
apache 의 child process 중 일부가 안 죽고 오래 살아있는 경우가 있어, 거기다 cpu 사용량까지 높아 서버 자원이 부족한 사태가 발생.서버 모니터링 문자 등을 받아 수작업으로 kill 시켜주다가, 귀찮아서 스크립트로 작성. 사실 원인 파악을 하고 해결해야 하지만, 여러 복잡한 관계가 얽혀있다보니 임시조치로 -_- 방법은 많겠지만 간단하게. 요런 스크립트를 하나 만들어 crontab 돌려두면 됨.참고로 5분 이상 돌고 있으면 죽여버리게 했는데, 이 코드도 문제가 있기 함. top -b -n 1 | grep -v root | grep httpd | awk '{ if ($11 > "5:00.00") { print $1 } }' | xargs kill -9