몽고DB, MongoDB에서 Auth 사용시 즉 권한 설정이 되어 있는 경우 로그인 방법에 대하여 알아봅니다.먼저 username, password가 설정된 경우에 Shell에서 로그인하려면 인증(Auth)이 필요합니다. 이때 인증을 수행하여 Mongo Shell에 접속하는 방법은 아래와 같습니다.# MongoDB에 사용자, 패스워드로 로그인 방법아래에서 admin은 admin 권한으로 로그인하겠다는 뜻입니다. 뒤의 username과 패스워드를 사용해 mongodb에 접근하도록 합니다.> mongo admin -u username -p 'password'이때 password는 따옴표를 사용하여야 에러가 발생 안하므로 주의하여야 합니다. 위 방법대로 해야 에러가 안나고 Mongo Shell에 접속이 가능합니다
Last Modified : 2018-04-06 05:32:23여러이유가 있겠지만 MongoDB의 권한설정은 반드시 필요합니다. 대표적인 이유로 개발중에 remote ip가 필요한 경우가 Auth 설정은 필수적입니다.RemoteIp를 열어둔 경우 ip주소와 port만 알면 누구나 접속할 수 있어 해킹의 위험이 발생합니다. 외부 접속이 반드시 필요하다면 Auth를 사용하기 위해서 User 및 Password를 설정해야합니다.# MongoDB Auth 설정방법 알아보기먼저 아래는 Auth 설정에 필요한 단계입니다. 순서대로 필요한 과정을 설정해야합니다.1. admin 데이터베이스 선택2. 사용할 User 및 Password 추가하기3. auth 권한설정으로 mongoDB 실행하기위 과정은 몽고DB에서 권한 설정하여 사용하는 방법입니다. 자세하게 알아보겠습니다.! admin
Last Modified : 2018-04-06 05:14:00개발환경을 한 곳이 아닌 여러 곳에 세팅 된 경우 파일 등은 git 또는 svn을 사용하여 작업하면 되지만 데이터베이스의 경우는 이런 방식을 적용하기 어렵습니다. remote 백업을 활용하는 방법 역시 있겠지만 업데이트가 빈번하다면 이것 역시 다소 번거로울 수 있죠. 이런 경우 외부에서 바로 데이터베이스에 접속하는 Remote Access를 활용하는 방법이 있습니다.# 리눅스 기준 MongoDB 외부 접속 가능하도록 변경하기 먼저 /etc/mongod.conf 파일에 접근하여 수정합니다.vim /etc/mongod.conf이제 bindIp 0.0.0.0과 같이 설정된 곳을 찾아 주석처리합니다.bindIp 0.0.0.0 // 변경 이전# bindIp 0.0.0.0 // 변경 후mongoDB
Last Modified : 2017-08-16 17:08:38만약 MongoDB에서 특정 컬럼이 있거나 없는 경우의 쿼리문을 작성하고자 합니다. 어떻게 하면 컬럼의 존재 여부를 적용하여 찾을 수 있을까요? 아래에서 알아봅니다.# MongoDB에 없거나 있는 컬럼으로 쿼리문 작성쿼리문에 find()를 사용하여 일치하는 데이터를 가져오려고 합니다. 이때 name이라는 필드가 있는 경우의 데이터만 필요할 수 있겠죠. 아니면 반대로 name 이름의 컬럼이 없는 데이터만 가져와 name의 값을 추가할 필요도 있을 것입니다. 이때 사용 가능한 방법이 바로 $exists입니다.$exists // <boolean> 컬럼의 여부 바로 간단한 예제를 만들어 보겠습니다.!MongoDB 컬럼이 없는 경우의 데이터 불러오기아래는 쿼리문을 사용하여 만약 name 이름의 컬럼이 없는 경우만 해
Last Modified : 2020-10-21 11:50:06MongoDB 전체 개수를 가져오는 가장 쉬운 방법에 대하여 알아봅니다. 데이터베이스에서 가져온 컬렉션이 몇개인지 확인하려면 아래의 쿼리문을 사용합니다.# MongoDB에서 불러온 컬렉션의 전체개수불러온 collection의 개수를 알려면 count()를 사용하여 가능합니다.db.collection.count()예를들어 컬렉션이 가진 개수가 총 10개라면 위 결과는 10이 나타나게됩니다. 여러 방법들 중에서 가장 쉽고 많이 사용되는 방법이죠.
Last Modified : 2017-10-21 09:15:36몽고DB를 비롯하여 NoSQL 역시 다른 Database, RDBMS처럼 인덱스 설정이 필요합니다. 그렇지 않으면 Slow Query 등 검색, 소팅 단계에서 성능에 큰 차이가 발생할 수 있습니다. 아래는 MongoDB에 인덱스를 설정하는 방법과 조회, 추가 및 관련 예제를 자세히 알아봅니다.# MongoDB 인덱스 조회 및 확인하기가장 먼저 설정된 인덱스를 조회하기 위한 방법입니다. 현재 설정된 MongoDB의 인덱스를 확인하기 위해서는 getIndexes()를 사용합니다.> db.collection.getIndexes()명령어를 실행하면 아래와 같이 나타납니다.[ { 'v': 1, 'key': { '_id': 1 }, 'name': '_id', 'ns': 'co
Last Modified : 2020-12-23 13:20:32간단한 몽고DB관련 명령어 및 MongoDB CLI(Command Line Interface)에서 사용 가능한 간단한 명령어들도 함께 알아보겠습니다. 먼저 데이터베이스를 조작하는 방법입니다.# 데이터베이스 관련 명령어 알아보기MongoDB CLI에서 출력, 조회를 비롯하여 생성, 삭제 등등의 다양한 명령어입니다. 아래에서 확인해보세요.! 설치된 모든 데이터베이스 리스트 출력하기존재하는 모든 데이터베이스를 보여줍니다.> show dbs> show databases아래와 같이 현재 MongoDB에 저장된 모든 데이터베이스의 이름과 크기를 출력합니다. 만약 local, test라는 데이터베이스를 가지는 경우라면 아래와 같이 나타납니다.local (empty)test 0.099GB여기서 local은 기본으
Last Modified : 2020-10-22 14:26:35MongoDB(몽고DB)에서 특정 문자열을 찾아 모든 row의 값 한 번에 바꾸려고 합니다. 어떻게 하면 될까요? 이 경우 find() 쿼리에 forEach() 루프를 사용하여 전체 row에서 특정 문자열을 replace()를 사용하여 변환할 수 있습니다. 다시 말해 아래의 두 가지 과정이 필요합니다.- forEach()를 사용하여 모든 row의 값을 변경하기- 찾아 변경하기 위해서 replace() 사용하기그럼 아래에서 자세히 알아보고 동시에 간단한 예제를 만들어 보겠습니다.! MongoDB 전체 문서에서 특정 문자열을 모두 변경하는 방법아래는 컬렉션 이름이 site인 MongoDB가 있습니다. 이제 replace()를 사용하여 이전 문자열을 변경할 문자열로 바꿀 수 있겠죠.db.site.find().f
Last Modified : 2021-02-03 13:08:47어제 새롭게 서버 이전을 계획하던 웹페이지에 접속했더니 데이터베이스의 자료를 읽어오지 못하던 오류가 나타났습니다... 갑자기 무슨 일인가 싶어 db에 직접 연결해보니 사용하던 MongoDB의 collection이 존재하지 않더군요. 이게 무슨 일인가 싶었는데 컬렉션을 조회해보니 모르는 데이터베이스가 새로 생성되어 있었습니다. 그 이름이 JUST_READ_ME였습니다..."혹시 해킹?"불길한 마음에 내용을 읽어보니 제 데이터를 보관하고 있다는 내용입니다. 내용은 길지 않았고 너는 해킹을 당했으며 아래로 비트코인을 보내라는 내용이었습니다. 또한 문의사항은 secmail.pro라는 곳의 이메일 계정으로 보내도록 되어있더군요... 그래서 알았습니다. 해킹은 결코 남의 일이 아니라는 것을!# 어떻게 해킹을 당했는가다
Last Modified : 2017-08-16 17:02:01Python에서 pymongo를 사용하는 예제에 대하여 알아봅니다. pymongo는 파이썬에서 MongoDB를 사용할 수 있는 모듈 이름입니다. 참고로 아래 예제는 Flask를 사용하였습니다.* 디렉토리 구조--- app.py | |--- templates | |--- fruits.html위 구조와 같이 render_template()은 templates 경로에 위치한 해당 파일을 불러옵니다.먼저 PyMongo가 설치되지 않은 경우 설치가 필요합니다. pip를 사용하여 pymongo를 설치합니다. 그 전에 pip 패키지 라이브러리를 최신버전으로 업그레이드 하면 좋을 것입니다. 아래와 같이 실행합니다.$ pip install --upgrade pip$ pip install pymongo#
Last Modified : 2018-02-12 01:51:21만약 AWS 환경에 아마존 리눅스를 사용하는 경우 MongoDB를 인스톨하는 경우 아래와 같이 수행합니다.먼저 Amazon Linux의 경우 기본적인 프로그램들이 미리 설치되어 있을 것입니다. 여기에 yum을 사용하여 MongoDB를 설치합니다. 먼저 리눅스 환경에 repository 설정을 완료하여야합니다./etc/yum.repos.d/mongodb-org-3.0.repo 파일을 생성한 후 아래의 설정을 추가합니다.파일을 생성할 경우 아래처럼 vim을 사용할 수 있을 것입니다.sudo vim /etc/yum.repos.d/mongodb-org-3.0.repo이제 repository에 대한 설정이 끝났습니다. 아래의 설정을 추가하세요.[mongodb-org-3.0]name=MongoDB Repositoryb
Last Modified : 2019-02-09 10:28:05MongoDB에서 컬렉션 조건으로 검색할 경우 AND 및 OR 조건에 따른 정규표현식 검색 방법을 알아봅니다.먼저 아래를 봐주세요.nameStr: 'webisfree again';nameStr 필드가 다음의 값을 가지는 경우 검색 조건 AND, OR을 알아봅니다.! AND 조건을 수행하는 방법만약 web 그리고 again이 포함된 데이터를 찾을 경우 아래의 정규식을 사용합니다.nameStr.match(/(?=.*web)(?=.*again)/)정규식에서 사용하는 AND 조건식 방법입니다.! OR 조건을 수행하는 방법만약 web 또는 again이 포함된 데이터, 즉 OR 조건인 경우를 찾는다면 아래의 정규식을 사용합니다. 비슷해 보이나 중간에 | 기호가 있습니다.nameStr.match(/(?=.*w
Last Modified : 2020-11-03 17:43:07MongoDB를 사용하는 경우 만약 웹페이에 새로운 유저가 방문시 방문자 카운트 필드의 값을 +1 하려고 합니다. 어떻게하면 될지 아래에서 알아봅니다.! MongoDB에서 auto incrementMongoDB는 다른 RDBMS처럼 auto increment를 설정하는 것이 없습니다. 즉 자동으로 숫자를 1씩 더할 수 없기 때문에 아래와 같이 직접 쿼리문에 1을 더하여 업데이트하는 방법이 필요합니다. 아래에서 자세히 알아봅니다.# MongoDB 특정 필드 값에 1 더하기auto increment 대신 MongoDB에서 숫자 1을 더하는 방법으로 $inc 연산자를 사용할 수 있습니다. 이를 사용하면 간단하게 해당하는 필드의 값을 변경할 수 있죠.$inc: { 필드명: 변경할 값의 크기 }위와 같이 방법은 간단
Last Modified : 2020-11-16 17:25:53몽고DB의 컬렉션에서 Document를 찾은 후 이를 출력할 때 정렬(sorting)하는 방법을 알아봅니다.# MongoDB find() 후 정렬하는 방법MongoDB의 데이터를 원하는 방식으로 정렬하고자 합니다. 먼저 원하는 데이터만 찾기 위해서 find()를 사용하고 반환된 cursor 객체에 sort() 함수를 사용해 아래와 같이 정렬 할 수 있습니다.db.collectionName.find().sort(sort조건)여기서 조건값을 설정하는 방법을 아래에서 간략하게 알아보겠습니다.조건값은 정렬할 필드명과 1, -1을 사용하여 오름차순 또는 내림차순을 결정하게됩니다. 아래처럼 사용되죠.db.site.find().sort({ 'date': -1 })여기서 sort() 메소드의 내부에 소팅할 값을 key와
Last Modified : 2020-07-30 10:43:03리눅스 ubuntu에 MongoDB를 설치하는 방법에 대하여 알아봅니다. 먼저 MongoDB의 설치시 알아야 할 부분은 무엇일까요?# MongoDB ubuntu Linux에 설치하는 방법MongoDB를 설치할 경우 주의할 부분이 있습니다. 바로 Version 확인 및 기존에 설치된 경우의 확인이 필요합니다. MongoDB는 버전에 따라 명령어 및 MongoClient 커맨드가 다를 수 있습니다. 가급적 최신 버전을 설치하는 것이 좋을 것입니다.먼저 최신버전을 설치하려면 apt-get을 사용하는 경우 패키지 정보를 받아오기 위해서 update부터 실행해야합니다. 또한 key 정보 역시 가져와야합니다.$ sudo apt-get update$ sudo apt-key adv --keyserver hkp://keys
Last Modified : 2019-08-06 00:09:08Python 웹어플리케이션에서 MongoDB를 사용하여 검색어를 찾을때 검색어가 하나가 아닌 여러 개인 경우 이를 해결하는 방법입니다.! 검색어의 빈공백을 사용하여 함께 포함된 and 조건 찾기하나가 아닌 여러 개의 검색어를 사용하기 위한 방법으로 스페이스(공백)을 많이 사용합니다. 즉 제목에서 찾을 때 '웹 이즈'로 검색어를 입력한 경우에는 아래처럼 검색이 되야합니다.'웹 이즈' => '웹' and '이즈' 모두 들어있는 제목을 찾기이 경우 공백을 사용한 정규표현식을 방법이 많이 사용됩니다. 즉 빈 여백(space)인 경우 각각 다른 문자열로 보고 이를 각각 and 조건으로 포함하는 쿼리문을 만들면 되겠죠. 이때 키워드의 공백은 아래와같이 replace()를 사용하여 변경합니다.---------------
Last Modified : 2020-11-06 11:57:13MongoDB에서 컬렉션 이름을 변경하려면 어떻게 하는지 알아봅니다.# MongodB 컬렉션 이름 변경하는 방법컬렉션 이름을 다른 것으로 바꾸는 방법입니다. 이 경우 renameCollection() 명령어를 사용합니다.db.myCollection.renameCollection('변경 할 컬렉션 이름')간단하게 예를들어 현재 posts라는 컬렉션이 존재하는 경우 이를 articles로 바꾸려면 mongo cli에 접속 후 아래와 같이 입력합니다.db.posts.renameCollection( "articles" )// Okay위와 같이 실행 후 기존 컬렉션 이름은 새롭게 변경됩니다.- 기존 컬렉션 이름 : posts- 변경 후 컬렉션 이름 : articles추가로 아래에서는 adminCommand()를 사용
Last Modified : 2020-07-17 21:37:27MongoDB에서 두 개 이상의 컬렉션을 특정 필드 값을 기준으로 하나로 합치는 방법에 대하여 알아봅니다.# MongoDB 컬렉션 필드 기준 합치기컬렉션을 하나로 합치는 방법은 몇 가지가 있습니다. 그 중에서 csv나 엑셀 등의 포맷으로 변경하는 방법도 하나의 방법입니다.! Collection 엑셀, csv로 합치기말 그대로 csv, excel 포맷을 변경한 후 다시 합치는 방법입니다. 간략하게 설명하면 아래와 같습니다.하나. 여러 개의 MongoDB 컬렉션들을 텍스트 파일로 변경둘. 하나의 파일로 합친 다음 다시 MongoDB로 옮기기위와 같이 저 각 컬렉션 데이터를 csv나 엑셀로 변환하기 위해 먼저 모든 데이터를 export합니다. 그 후 일치 될 필드를 기준으로 vlookup을 사용해 추가할 값을 찾
Last Modified : 2020-07-30 20:51:42ubuntu 환경의 MongoDB(몽고db)에서 에러가 발생하거나 동작하지 않는 경우 해결 방법에 대하여 알아봅니다.! MongoDB에러가 발생하는 원인은?언제 에러가 발생할까요? 일반저긍로 아래와 같은 수행 이 후 예기치 못 한 에러가 나타날 가능성이 높습니다. - mongodb 재설치 이 후- 최신버전의 mongpdb 업데이트 이 후- 데이터베이스 쿼리 변경원인은 여러가지가 있을 수 있습니다. 정확한 원인을 파악하기 위해 가장 중요한 것은 무엇보다 동작하지 않을 때의 로그 메시지를 잘 확인하고 대응하는 것이 중요하죠.아래는 각 현상에 따라 해결할 수 있는 방법들을 구분하였습니다.@ dbpath 데이터 베이스를 찾지 못하는 경우데이터 저장소의 위치를 찾지 못하는 경우가 발생할 수 있습니다. mongodb
Last Modified : 2020-09-16 12:25:12Python 앱에서 MongoDB를 사용하는 경우 불러온 커서 객체를 리스트 타입(배열)으로 변경하는 방법을 알아봅니다.! MongoDB 커서 리스트로 바꾸기먼저 리스트 타입으로 변경하는 이유는 무엇일까요? MongoDB의 레코드를 find() 등을 사용하여 여러 개로 불러오면 커서 객체가 반환됩니다. 그런데 이 값을 파이썬에서 변경하거나 json 등의 형태로 반환하기 위해서 리스트로 타입 변경을 하게 됩니다.이제 커서 객체를 리스트로 변경해보겠습니다. 이 경우 아래와 같이 두 가지 방법을 사용할 수 있습니다.@ list() 함수 사용하기먼저 list() 함수를 사용하는 방법입니다. db.myCollection.find()로 원하는 데이터를 반환한 경우 list()를 사용하여 타입을 변경합니다.results
Last Modified : 2020-11-09 16:31:44MongoDB에서 find()를 사용하여 원하는 문서를 검색할 때 하나의 필드가 아닌 여러개의 필드 안에서 값을 찾는 방법에 대하여 알아봅니다.예를들어 만약 webisfree라는 키워드를 mongodb에서 검색하고자 할때 제목뿐만 아니라 본문과 태그에서도 검색되도록 하기 위해서 여러개의 컬럼에서 검색이 되도록 하려면 쿼리문을 어떻게 작성하면 될까요?! $or를 사용하여 여러개의 컬럼에서 찾기이때 사용 가능한 방법이 바로 $or를 사용하는 방법입니다. 즉 쿼리에 or 조건을 사용해 여러개의 컬럼에서 모두 검색할 수 있겠죠. 만약 아래와 같이 데이터가 MongoDB에 존재하는 경우를 생각해봅니다.@ Collection: website{ title: '웹이즈프리', content: 'Hello, Hi, Goo
Last Modified : 2020-11-04 09:59:03MongoDB 연산자 중 $text에 대하여 알아봅니다.# $text 연산자는?MongoDB를 사용하여 텍스트를 검색하는 경우 $text 연산자를 많이 사용합니다.그래서 MongoDB의 제목이나 본문 등 텍스트가 많은 경우에 원하는 텍스트를 검색할 때 매우 쉽게 검색 쿼리를 작성할 수 있도록 도와줍니다.가장 기본적인 $text 연산자 사용의 문법입니다.{ $text: { $search: <string>, $language: <string>, $caseSensitive: <boolean>, $diacriticSensitive: <boolean> }}간단하게 설명하면 아래와 같습니다.$search // 검색에 사용할 키워드 조건$language // 검색에 사용될 언어 설정$caseSe
Last Modified : 2021-02-16 15:04:34MongoDB를 사용하는 경우 만약 불필요한 컬럼이 존재할 수 있습니다. 예전에는 사용했었지만 현재는 사용하지 않는 경우의 필드가 그런 경우가 되겠죠.이 경우 더 이상 필요없는 컬럼은 바로 삭제하는 것이 좋을 것입니다. 그렇다면 어떻게 하면 MongoDB의 컬럼을 삭제할 수 있을까요? 아래에서 알아봅니다.# MongoDB 불필요한 컬럼 삭제하는 방법이때 많이 사용하는 방법 역시 update를 사용하는 쿼리문입니다. update는 컬렉션의 값을 새롭게 변경하거나 추가할 수도 있지만 반대로 삭제하는 것도 가능합니다. 이를 위해서 추가로 연산자 $unset을 사용해야 합니다.db.collection.update( { 'columnName': { '$exists': true } }, // 일치하는 컬럼, 필드를
Last Modified : 2021-04-11 19:38:32