import pymongo
username = 'davelee'
password = 'korea123'
connection = pymongo.MongoClient('mongodb://%s:%s@www.funcoding.xyz' % (username, password))
db = connection.test_index_db
# test_index_db 에는 어떤 컬렉션이 있을까?
db.collection_names()
# test data 삽입
db.articles.insert_many(
[
{ "name": "Java Hut", "description": "Coffee and cakes", "ranking": 1 },
{ "name": "Burger Buns", "description": "Java hamburgers", "ranking": 2 },
{ "name": "Coffee Shop", "description": "Just coffee", "ranking": 3 },
{ "name": "Clothes Clothes Clothes", "description": "Discount clothing", "ranking": 4 },
{ "name": "Java Shopping", "description": "Indonesian goods", "ranking": 5 }
]
)
db.articles.drop()
# text 인덱스 생성
db.articles.create_index('ranking')
# text 인덱스 확인
db.articles.index_information()
# index_information() 에 넣어진 'key'의 값을 통째로 정확하게 적어야 삭제 가능
db.articles.drop_index([('ranking', 1)])
# text 인덱스 다시 생성
db.articles.create_index([('ranking', pymongo.DESCENDING)])
db.articles.index_information()
# index_information() 에 넣어진 'key'의 값을 통째로 정확하게 적어야 삭제 가능
db.articles.drop_indexes()
db.articles.index_information()
db.articles.create_index([('name', pymongo.TEXT)])
db.articles.index_information()
db.articles.drop_indexes()
db.articles.create_index([('name', pymongo.TEXT), ('ranking', pymongo.ASCENDING)])
db.articles.index_information()
db.articles.drop_indexes()
db.articles.create_index([('name', pymongo.TEXT)])
result = db.articles.find()
for record in result:
print(record)
# $text operator를 사용한 인덱스 텍스트 데이터 검색 ($text operator 는 $search operator 와 함께 사용됨)
result = db.articles.find({'$text' : {'$search' : 'coffee'}})
for record in result:
print(record)
# 띄어쓰기가 있는 경우
result = db.articles.find({'$text' : {'$search' : 'java coffee shop'}})
for record in result:
print(record)
# coffee shop 으로 정확한 검색
result = db.articles.find({'$text': {'$search':"\"coffee shop\"" } } )
for record in result:
print(record)
# 대소문자 구별 (실제 name의 컬럼값은 Coffee 이므로, 검색이 안됨)
result = db.articles.find({'$text' : {'$search' : 'coffee', '$caseSensitive' : True}})
for record in result:
print(record)
# 정규표현식 ($text operator 는 $search operator 와 함께 사용됨)
result = db.articles.find({'name' : {'$regex' : 'Cof.+'}})
for record in result:
print(record)
# 정규표현식, 실제 컬럼명과 함께 사용 가능 ($text operator 는 $search operator 와 함께 사용됨)
result = db.articles.find({'name' : {'$regex' : 'Cof.+'}})
for record in result:
print(record)