-
[Python] MongoDB (pymongo)언어/파이썬 & 장고 2017. 2. 8. 10:45
Mongo DB 용어
SQL 용어 MongoDB 용어 일반 용어 데이터베이스(database) 데이터베이스(database) 테이블(table) 콜렉션(collection) 행(row) 문서(document) / BSON 문서(BSON document) 컬럼(column) 필드(field) 인덱스(index) 인덱스(index) 테이블 조인(table join) 임베디드 문서 및 링킹(embedded documents and linking) 주키(primary key) 주키(primary key) 특정 컬럼을 주키로 지정 주키가 _idfield로 자동 설정됨 집계(aggregation, 예: group by) 집계 파이프라인(aggregation pipeline) Python 내 Mongo DB 모듈 설치
$pip3 install pymongo
Connection과 Database, Collection 생성 및 선택
import pymongo conn = pymongo.MongoClient('서버ip', port) db = connection.AAA # AAA라는 이름의 데이터베이스 생성 collection = db.test # test라는 이름의 테이블 생성 db = conn.get_database('데이터베이스명') # 데이터베이스 선택 collection = db.get_collection('컬렉션명') # 테이블 선택 ## 예시 conn = pymongo.MongoClient('127.0.0.1', 27017) # mongoDB에서 port를 변경하지 않았으면 기본값인 27017 db = conn.get_database('mongo_test') # mongo_test 데이터베이스 선택 collection = db.get_collection('test_table') # test_table 테이블 선택
Collection List
collection_list = db.collection_names() # 선택된 데이터베이스의 collection 목록들을 출력. return type = list print (collection_list)
Insert
collection.insert({"number":0}) # 선택된 컬렉션에 키가 number, 값이 0인 데이터 저장
find (=select)
# 전체 조회 results = collection.find() # find()에 인자가 없으면 해당 컬렉션의 전체 데이터 조회. return type = cursor for result in results: print (result) # 조건 조회 results = collection.find({"id": {"$gt":90}}) # id가 90보다 큰 데이터 조회. $gt는 '~보다 크다'의 의미 for result in results: print (result)
Update
collection.update({업데이트를 위해 선택할 key-value쌍}, {수정될 내용의 key-value쌍}, upsert, 멀티라인 조건여부) # upsert와 멀티라인 조건여부의 default는 false # upsert: True일 경우, 선택할 key-value가 존재하면 업데이트를 진행하고 존재하지 않으면 insert를 징행 # 멀티라인 조건여부: True일 경우, 선택할 key-value가 여러개가 존재할 때 전부다 수정될 내용의 key-value쌍으로 수정 ## 예시 collection.update({'id':'5'}, {'id':'5','name':'kim'}, upsert=True, False) # id가 5인 데이터가 존재하면 {'id':'5','name':'kim'}로 update를 하고 존재하지 않으면 insert collection.update({'id':'5'}, {'id':'5','name':'kim'}, upsert=True, multi=True)# id가 5인 데이터가 여러 개 존재하면 전부 다 {'id':'5','name':'kim'}로 수정
Remove (=delete)
collection.remove({"id": {"$gt":90}}) # id가 90보다 큰 데이터 삭제