목차
find_one() 메서드 - collection에서 1개 데이터 찾기
find() 메서드 - collection에서 여러 데이터 가져오기
일부 컬럼의 데이터만 가져오기
일부 컬럼 제외 시, 에러 발생 경우
MongoDB : find(), find_one() 메서드로 컬렉션에서 데이터 찾음.
cf. MySQL : SELECT 문 사용해, 테이블에서 데이터를 찾음 .
find_one() 메서드 - collection에서 1개 데이터 찾기
※ find_one() 메서드 이용.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
x = mycol.find_one()
print(x)
결과값: {'_id': 1, 'mb_name': 'AAA', 'mb_level': '1'}
find() 메서드 - collection에서 여러 데이터 가져오기
※ find() 메서드 이용.
1.
선택 항목의 모든 항목을 반환.
2.
find()메서드의 첫 번째 매개변수 는 쿼리 객체임.
이 예에서는 컬렉션의 모든 문서를 선택하는 빈 쿼리 개체를 사용.
3.
find() 메서드에 매개변수 없으면 MySQL의 SELECT * 와 동일한 결과 제공.
[예제]
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find() :
print(x)
결과값:
{'_id': 1, 'mb_name': 'AAA', 'mb_level': '1'}
{'_id': 2, 'mb_name': 'BBB', 'mb_level': '2'}
...
일부 컬럼의 데이터만 가져오기
1.
find() 메서드의 두 번째 매개변수는 컬럼 출력 여부 결정 객체 임.
※ 값이 0인 컬럼 경우 : 출력 X
※ 값이 1인 컬럼 경우 : 출력 O
2.
이 매개 변수는 선택 사항이며, 생략 시 모든 필드가 결과에 포함.
3.
동일 객체에서 0과 1 값을 모두 지정 시 에러 발생.
(단, 필드 중 하나가 _id 필드 인 경우엔 괜찮음.)
4.
값이 0인 필드 명시한 경우, 다른 모든 필드는 묵시적으로 1 가짐.
※ 그 반대 경우도 마찬가지.
[정상 예제1] _id 컬럼 출력 제외.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, { "_id": 0, "mb_name": 1, "mb_level": 1 }):
print(x)
결과값:
{'mb_name': 'AAA', 'mb_level': '1'}
{'mb_name': 'BBB', 'mb_level': '2'}
...
[정상 예제2] mb_level 컬럼 출력 제외.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, { "mb_level": 0 }):
print(x)
결과값:
{'_id': 1, 'mb_name': 'AAA'}
{'_id': 2, 'mb_name': 'BBB'}
...
[정상 예제3] _id와 mb_level 컬럼 출력 제외
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, {"_id": 0, "mb_level": 0 }):
print(x)
결과값:
{'mb_name': 'AAA'}
{'mb_name': 'BBB'}
...
[정상 예제4] _id 컬럼 출력 제외.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, {"_id": 0}):
print(x)
결과값:
{'mb_name': 'AAA', 'mb_level': '1'}
{'mb_name': 'BBB', 'mb_level': '2'}
...
일부 컬럼 제외 시, 에러 발생 경우
동일한 객체에 0과 1 모두 지정하면 오류 발생. 단, 필드 중 하나가 _id 필드 인 경우엔 무방함.
[에러 예제1] _id 속성 아닌 다른 컬럼에 0과 1 지정.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, { "mb_name": 1, "mb_level": 0 }):
print(x)
결과값: 에러 발생.
[에러 예제2] _id 속성 아닌 다른 컬럼에 0과 1 지정.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, { "mb_name": 0, "mb_level": 1 }):
print(x)
결과값: 에러 발생.
[에러 예제3] _id 속성 아닌 다른 컬럼에 0과 1 지정.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, { "_id": 0, "mb_name": 0, "mb_level": 1 }):
print(x)
결과값: 에러 발생
[에러 예제4] _id 속성 아닌 다른 컬럼에 0과 1 지정.
import pymongo
myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['hz']
mycol = mydb["hz_member"]
for x in mycol.find({}, { "_id": 0, "mb_name": 1, "mb_level": 0 }):
print(x)
결과값: 에러 발생.
주소 복사
랜덤 이동
최신댓글