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보다 큰 데이터 삭제


+ Recent posts