ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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보다 큰 데이터 삭제


    댓글