더북(TheBook)

pymongo는 파이썬의 딕셔너리로 MongoDB 문서를 표현한다. 객체를 표현하는 딕셔너리는 반드시 _id 키를 가져야 한다. 키가 없다면 서버가 이를 자동으로 생성한다.

컬렉션 객체는 컬렉션에 있는 문서를 입력·조회·삭제·업데이트·교체·집계하고 인덱스를 생성하는 다양한 함수를 제공한다.

insert_one(doc)insert_many(docs) 함수는 1개의 문서나 문서 리스트를 컬렉션에 입력한다. 이들 함수는 InsertOneResultInsertManyResult 객체를 반환한다. 그리고 각각 inserted_idinserted_ids 속성을 제공한다. 문서에 명시적인 키가 없을 때 이들 속성을 사용하면 키를 찾을 수 있다. _id 키가 지정되어 있다면 이는 문서를 입력한 후에도 그대로 남아 있다.


person1 = {"empname" : "John Smith", "dob" : "1957-12-24"}

person2 = {"_id" : "XVT162", "empname" : "Jane Doe", "dob" : "1964-05-16"}

person_id1 = people.insert_one(person1).inserted_id

person_id1

>>>

ObjectId('5691a8720f759d05092d311b')


# 새로운 "_id" 필드가 생겼다!

person1

>>>

{'empname': 'John Smith',

'dob': '1957-12-24',

'_id': ObjectId('5691a8720f759d05092d311b')}


# _id 키를 명확히 지정했으므로 키를 자동으로 생성하지 않는다.

person_id2 = people.insert_one(person2).inserted_id

person_id2

>>>

"XVT162"4


persons = [{"empname" : "Abe Lincoln", "dob" : "1809-02-12"},

           {"empname" : "Anon I. Muss"}]

result = people.insert_many(persons)

result.inserted_ids

>>>

[ObjectId('5691a9900f759d05092d311c'),

 ObjectId('5691a9900f759d05092d311d')]




4 역주 DuplicateKeyError: E11000 duplicate key error collection: dsdb.people index: _id_ dup key: { : “XVT162” } 오류가 발생한다면 이 명령어를 생성한 후 같은 명령어를 실행했기 때문입니다. person_id2를 입력해 해당 ID 값이 나오면 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.