IT/DB 2021. 8. 3.
Mongoengine 키, 인덱스 등록시 2개 이상 필드로 unique 등록
하나의 필드가 하나의 키나 인덱스로 작용이 되면 unique=True 이렇게 편하게 주면 되는데, 2개의 필드가 합쳐야 유일한 키가 되는 경우는 어떻게 하나? 당연히 선지자들은 많이 해본 경험으로 이런 함수를 만들어 두었네 unique_with='같이고려해야하는필드명' 이렇게 선언부에 넣어두면 된다는 말씀. 원본 문서에서 가져옴 https://docs.mongoengine.org/guide/defining-documents.html#uniqueness-constraints 2.3.3.6. Uniqueness constraints MongoEngine allows you to specify that a field should be unique across a collection by providing un..
IT/DB 2021. 7. 22.
MongoDB 기본적인 내용 이해 - 글 소개
검색을 많이 해 보고, 나름 찾아놓은 괜찮는 자료 https://kciter.so/posts/about-mongodb MongoDB 이해하기 사내에서 MongoDB를 잘 쓰기위한 스터디를 하게되어 이번 기회에 관련 자료를 정리하기로 했다. MongoDB가 왜 필요한지, 더 잘사용하기 위해서 무엇이 필요한지를 중심으로 처음 MongoDB를 사용할 때 kciter.so MongoDB와 RDBMS는 적합한 사용처가 다르다. 내 개인적인 생각으론 MongoDB를 비롯한 NoSQL은 최대한 단순하게 사용하는 것이 옳은 방향이라고 생각한다. NoSQL은 최대한 단순하면서 많은 데이터, RDBMS는 복잡하면서 무결성이 중요한 데이터에 적합하다고 생각한다. 물론 데이터를 단순화하는 것도 쉬운 일은 아니기 때문에 만약 ..
IT/DB 2021. 7. 15.
MongoDB - 이미지 파일 같은 바이너리 데이터 입력하기
요거요거 DB 에 바이너리 데이터를 입력해 둬야 한다. 머 FTP를 이용해서 파일은 따로하고, DB에는 Meta 데이터만 넣고 처리할 수 있으나 한번에 되는게 효율적이긴 하고 사용자도 더 편리할 듯~~~~ 다행히 MongoDB 를 쓰기 위해 사용준인 MongoEngine에는 FileField 라는 것이 정의되어 있다. 간단하게 사용할 수 있는 예제를 아래 페이지에서 찾아 낼 수 있었다. https://www.tutorialspoint.com/mongoengine/mongoengine_gridfs.htm MongoEngine - GridFS - Tutorialspoint MongoEngine - GridFS In MongoDB, the files with size larger than 16 MB are s..
IT/DB 2021. 7. 8.
우분투 18.04 LTS MongoDB 설치 및 설정, 관리자 계정 추가 정리본
우분투 18.04LTS MongoDB 설치하기는 긴말이 필요없다. 사실 이 모든 과정은 아래 MongoDB 제공자 사이트에서 친절하게 설명되어 있다. https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/ Install MongoDB Community Edition on Ubuntu — MongoDB Manual Install MongoDB > Install MongoDB Community Edition > Install MongoDB Community Edition on Linux MongoDB AtlasMongoDB Atlas is a hosted MongoDB service option in the cloud which require..
IT/DB 2021. 7. 1.
MongoDB 연결된 상태 보기
mongo shell 명령도 있겠지만, 일단 리눅스에서 네트워크 정보를 보는 것으로 간단하게 살펴보자. 아래와 같은 명령으로 대략은 살펴 볼 수 있겠다. $ sudo netstat -anp --tcp --udp | grep mongo tcp 0 0 192.168.0.4:27017 0.0.0.0:* LISTEN 1091/mongod tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 1091/mongod tcp 0 0 127.0.0.1:27017 127.0.0.1:46976 ESTABLISHED 1091/mongod tcp 0 0 127.0.0.1:27017 127.0.0.1:46988 ESTABLISHED 1091/mongod tcp 0 0 127.0.0.1:27017 127.0.0..
IT/DB 2021. 6. 21.
Flask MongoEngine 쿼리 filter() 함수 문자열 - Query Operators
Flask MongoEngine 쿼리 filter() 함수 문자열에 대해서 정리해 둬보자. (사실 해본거 하나만 더 적어두자, 해본거니깐) 맨날 = 만 쓰려니 MongoEngine 홈페이지에 가면 다양한 operator 가 있다 쿼리로 사용할 수 있는, 가장 기본적인 예제로 아래와 같이 18세 이하 사용자를 찾아라 같은 예제가 있다. # Only find users whose age is 18 or less young_users = Users.objects(age__lte=18) 즉, 필드명에다가 언더스코어 2개를 넣고 원하는 기능어를 넣으면 쿼리 스트링이 완성된다. 필드명__operator 오퍼레이터의 종류는 아래와 같다. https://docs.mongoengine.org/guide/querying...
IT/DB 2021. 6. 15.
mongodb - Flask mongoengine 필드 동일값을 그룹으로 묶기
저장된 데이터를 특정한 필드 값으로 그룹을 묶고 싶을때가 있다. 같은 값을 가진 문서가 몇개인지 궁금할 때가 가장 단순한 예가 되겠다. 이런 경우 aggregate 함수를 활용하면 된다. 몽고db 매뉴얼 페이지에서 해당 내용을 가져와 보자. https://docs.mongodb.com/manual/reference/operator/aggregation/sum/ Grouping the documents by the day and the year of the date field, the following operation uses the $sum accumulator to compute the total amount and the count for each group of documents. db.sales..
IT/DB 2021. 6. 11.
mongodb - Flask mongoengine을 이용하여 필드 추가, 삭제
이미 설계 이후에, 스키마가 변경되어서 다큐먼트 필드가 추가되거나 삭제되는 경우가 있다. 이때 새로운 레코드는 해당 필드가 있는데, 기존 레코드에 없다면 좀 이상하기도 합니다. 혹은 필드를 삭제하는 경우도 있어 이경우도 기존 DB 에 반영해야 한다. Mongoengine 을 이용하는 경우 해당 클래스에 필드를 추가, 삭제하고 난 뒤에, 추가된 필드의 경우 아래처럼 모든 objects 에 해당 필드값을 채워주기만 하면 된다. 해당클래스.objects.update(추가필드1=0,추가필드2="") 삭제되는 필드의 경우 아래처럼 명령을 내리면 해결된다. 해당클래스.objects.update(unset__code=True) # Note: code 라는 필드를 없애라 BJ. Markus Winkler 님의 사진, ..
IT/DB 2021. 6. 9.
Flask mongoengine Objects() 와 Objects.get() 차이점
문제 정의는 flask mongoengine 에서 하고 있지만, mongoengine 이라는 것이 Django ORM 특성을 가져온 것으로 알고 있어 비스무리 한 곳을 찾아보았다. 원하는 답은 찾은 듯 하여 여기에 남겨두다. 머 쉽게는 리스트를 리턴해야 하는데 Objects.get()을 쓰면 제일 첫번째 놈 object 만 리턴한다는 것! https://code4human.tistory.com/81 [Django] Django의 ORM : get() 과 filter() 비교 Django ORM을 작성하면서 SQL문을 확인하곤 한다. 오류를 발견하면서 헷갈리는 get() 과 filter()을 간단히 정리한다. fetchone # ORM User.objects.get(id=1) #Return : Object..
IT/DB 2021. 5. 9.
MongoDB 관리자 계정 추가 권한 설정 방법 - db 쓰고 읽기
무엇이 이렇게 어렵다냐~~ 그냥 admin 권한을 주고 쓰도록만 해주자. 나중에 권한별로 사용자 관리를 다시 하더라도. 검색을 하다보니, 대부분 사용자 관리를 위한 admin을 설정하는 방법이 나와 있어서 실제 동작을 수행할 때 권한 오류가 나서 당황, 관리자 아이디, 패스워드 추가하기 그냥 쉽게 admin에 db, collection 을 읽고 쓸수 있는 권한을 줄 수 있도록만 설정해 보자. 관련글은 아래글 참고 https://bjcomm.co.kr/188?category=572933 [MongoDB] 관리자 계정 추가/삭제하기 처음 MongoDB를 설치하게되면 기본 계정은 존재하지 않고 생성해야 합니다. 또한 한 계정으로 여러 데이터베이스의 권한을 가질 수 없으며 1사용자 1데이터베이스 원칙이 기존 M..
IT/DB 2021. 4. 30.
MongoDB 백업하기 - mongodump
무슨 긴말이 필요할까? 그냥 성공한 명령어 저장 mongodump --out ~/저장디렉토리명 --host 127.0.0.1 --port 27017 -u 사용자명 -p 패스워드 --db 백업원하는DB명 --authenticationDatabase admin 딱 성공하면 아래처럼..저장디렉토리명 아래에 DB 이름으로 백업되어 있음을 볼 수 있다. 생각보다 파일 사이즈가 크네. 머 아무튼 성공 이제 복원해보러 가야지. 2021.03.18 - [IT/DB] - MongoDB 복원하기 - mongorestore MongoDB 복원하기 - mongorestore 백업 했으니 복원도 테스트 해봐야지 말이 필요없다. 성공한 내용은 아래와 같다. mongorestore --host 127.0.0.1 --port 270..
IT/DB 2021. 3. 18.
MongoDB 복원하기 - mongorestore
백업 했으니 복원도 테스트 해봐야지 말이 필요없다. 성공한 내용은 아래와 같다. mongorestore --host 127.0.0.1 --port 27017 -u 사용자명 -p 비밀번호 --db 복원할DB ~/mongo_backup/복원할DB --authenticationDatabase admin --drop 물론 복원할 DB가 저장되어 있는 위치는 잘 맞춰서 넣어 주어야 한다. 문제가 없으면 아래와 같은 진행과정을 볼 수 있다. 이제 필요시 백업 복원은 자유롭게 해 보자. 물론 RAID 처럼 자동으로 되면 좋은데, 이것도 알아볼까나~~ 아~ --drop 이 문제가 많이 되었다. 여기저기 찾아보면 --drop 옵션에 db 명을 적어 주는 것으로 되어 있는데 난 해보니 그냥 옵션만 주는 게 맞는 것 같다...