목록Database/MongoDB (5)
미니옵빠의 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 에 쿼리 시, ..
mongod.conf systemLog: destination: file path: "/myhome/logs/mongodb/mongod.log" logAppend: truestorage: dbPath: "/myhome/apps/mongodb/data/db" journal: enabled: trueprocessManagement: fork: truenet: bindIp: 0.0.0.0 port: 27017setParameter: enableLocalhostAuthBypass: false 실행은 이런 식으로 ./mongod --config mongod.conf ref: https://docs.mongodb.com/manual/reference/configuration-options/index.html
MongoDB 초기 설치 후 실행, Client 접속 시 외부에서 IP로 접근되지 않음. loopback 으로만 접속 가능. 아래와 같이 설정하면 내부, 외부 다 접속 가능함 ./mongod --bind_ip 0.0.0.0 또는 ./mongod --bind_ip_all * 가능하면 Configuration File을 이용하여 선언하자. Elasticsearch 도 그렇고 요새는 이런 방식이 대세임 ref: https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-bind-ip