PyMongo
패키지 설치
pip install pymongo
데이터베이스 접속
PYMONGO-EX/ex01.py
from pymongo import MongoClient # db 서버 접속 db_client = MongoClient("mongodb://localhost:27017/") # 기존 데이터베이스이름 목록 출력 print(db_client.list_database_names())
문서 하나 삽입
PYMONGO-EX/ex02.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] # 데이터베이스 선택, 없으면 자동 생성 sensors_col = iot_db['sensors'] # 컬렉션 선택, 없으면 자동 생성 sensor_value = { "topic": "iot/home1/device1/temp", "value": 24 + random.random(), "reg_date": datetime.utcnow() # 현재 시간(UTC) } x = sensors_col.insert_one(sensor_value) print(x.inserted_id)
여러 개의 문서 삽입
PYMONGO-EX/ex03.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] sensor_values = [ { "topic": "iot/home1/device1/temp", "value": 24 + random.random(), "reg_date": datetime.utcnow() # 현재 시간 }, { "topic": "iot/home1/device1/humi", "value": 55 + random.random(), "reg_date": datetime.utcnow() # 현재 시간 }, { "topic": "iot/home2/device1/temp", "value": 24 + random.random(), "reg_date": datetime.utcnow() # 현재 시간 }, { "topic": "iot/home2/device1/humi", "value": 55 + random.random(), "reg_date": datetime.utcnow() # 현재 시간 } ] x = sensors_col.insert_many(sensor_values) # 여러 문서 삽입 print(x.inserted_ids)
여러 문서 읽기
PYMONGO-EX/ex04.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] list = sensors_col.find() for x in list: print(x)
정렬 하기
PYMONGO-EX/ex05.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] list = sensors_col.find().sort("value") # 내림차순 .sort("value", -1) for x in list: print(x)
쿼리 하기
PYMONGO-EX/ex06.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] query = {"topic": "iot/home1/device1/humi"} list = sensors_col.find(query).sort("value") # .sort("value", -1) for x in list: print(x) print(type(list))
비교연산자로 쿼리 하기
PYMONGO-EX/ex07.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] query = {"value": {"$gt": 55.1}} projection = { "_id" : 0, "topic":1, "value":1} # topic과 vale만 출력 "reg_date":0 으로도 가능 list = sensors_col.find(query, projection).sort("value") # .sort("value", -1) for x in list: print(x)
하나 업데이트하기
PYMONGO-EX/ex08.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] query = {"value":{"$gt":55.1}} newvalues = {"$set": { "reg_date": datetime.now() }} # KST sensors_col.update_one(query, newvalues) sensor_values = sensors_col.find() for x in sensor_values: print(x)
여러 개 업데이트하기
PYMONGO-EX/ex09.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] query = {"value": {"$gt": 55.1}} newvalues = {"$set": {"reg_date": datetime.now()}} sensors_col.update_many(query, newvalues) sensor_values = sensors_col.find() for x in sensor_values: print(x)
하나 삭제하기
PYMONGO-EX/ex10.py
from pymongo import MongoClient from datetime import datetime from bson.objectid import ObjectId import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] query = {"value":{"$gt":24.1}} # query = {"_id" : ObjectId("5f83e7547d80e57f631da801")} # 일반적으로 데이터를 삭제할 땐 id를 받아 삭제를 진행 sensors_col.delete_one(query) # 한개삭제 sensor_values = sensors_col.find() for x in sensor_values: print(x)
여러 개 삭제하기
PYMONGO-EX/ex11.py
from pymongo import MongoClient from datetime import datetime import random db_client = MongoClient("mongodb://localhost:27017/") iot_db = db_client['iot_service'] sensors_col = iot_db['sensors'] query = {"value": {"$lt": 55.1}} sensors_col.delete_many(query) sensor_values = sensors_col.find(query) for x in sensor_values: print(x)
다른 접근 방법
PYMONGO-EX/ex12.py
from pymongo import MongoClient from datetime import datetime import random mongodb = MongoClient("mongodb://localhost:27017/") db = mongodb.iot_service slist = db.sensors.find() for x in slist: print(x)
아이피로 접근
C:\Program Files\MongoDB\Server\4.4\bin\mongod.cfg
# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # Where and how to store data. storage: # dbPath: %MONGO_DATA_PATH% dbPath: c:\data\db journal: enabled: true # engine: # mmapv1: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true # path: %MONGO_LOG_PATH%\mongod.log path: c:\data\log\mongod.log # network interfaces net: port: 27017 # bindIp: 127.0.0.1 bindIp: 0.0.0.0 #processManagement: #security: #operationProfiling: #replication: #sharding: ## Enterprise-Only Options: #auditLog: #snmp:
C:\data\log 디렉토리까지 만들어준다.
적용
C:\Program Files\MongoDB\Server\4.4\bin\
Shift + 마우스 오른쪽 > PowerShell
>
mongod --config mongod.cfg
'IoT 디바이스 활용 > NoSQL - MongoDB' 카테고리의 다른 글
MongoDB - 셸 경험하기 - 도큐먼트 생성·조회·수정·삭제·트랜잭션 (0) | 2020.10.20 |
---|---|
MongoDB - 이해하기 - 설치, 소개, 구조, 데이터 타입 (0) | 2020.10.20 |
댓글