pymongo는 파이썬의 딕셔너리로 MongoDB 문서를 표현한다. 객체를 표현하는 딕셔너리는 반드시 _id 키를 가져야 한다. 키가 없다면 서버가 이를 자동으로 생성한다.
컬렉션 객체는 컬렉션에 있는 문서를 입력·조회·삭제·업데이트·교체·집계하고 인덱스를 생성하는 다양한 함수를 제공한다.
insert_one(doc)과 insert_many(docs) 함수는 1개의 문서나 문서 리스트를 컬렉션에 입력한다. 이들 함수는 InsertOneResult나 InsertManyResult 객체를 반환한다. 그리고 각각 inserted_id와 inserted_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 값이 나오면 됩니다.