MongoDB에서 필드(컬렉션 내 문서의 키) 이름을 지정할 때는 몇 가지 제한 사항이 있습니다. 가장 대표적인 규칙은 다음과 같습니다.
필드 이름에 사용할 수 없는 문자
- 달러 기호($): 집계 연산자나 시스템 필드를 나타내는 데 예약된 문자이므로 필드 이름에 사용할 수 없습니다.
- 마침표(.): 중첩된(nested) 문서의 경로를 표현하는 구분자로 사용되기 때문에 필드 이름 자체에 포함할 수 없습니다.
또한 필드 이름은 $로 시작해서는 안 됩니다. 이 규칙을 지키지 않으면 쿼리 작성 시 충돌이 발생하거나 드라이버가 해당 필드를 올바르게 처리하지 못할 수 있습니다.
허용되는 필드 이름 예시
반면 공백이나 한글 등 다른 문자는 필드 이름으로 자유롭게 사용할 수 있습니다. 아래는 공백이 포함된 필드 이름 "Employee Name"을 사용해 문서를 삽입하는 예시입니다.
> db.charactersAllowedDemo.insertOne({"Employee Name" : "John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c7fefbc8d10a061296a3c6d")
}find() 메서드로 문서 확인하기
find() 메서드를 사용하면 컬렉션의 모든 문서를 조회할 수 있으며, pretty()를 함께 사용하면 결과를 보기 좋게 정렬된 형태로 출력할 수 있습니다.
> db.charactersAllowedDemo.find().pretty();
실행 결과는 다음과 같습니다.
{
"_id" : ObjectId("5c7fefbc8d10a061296a3c6d"),
"Employee Name" : "John"
}참고 사항
MongoDB 5.0부터는 저장 엔진 수준에서 마침표와 달러 기호가 포함된 필드 이름의 일부 사용이 허용되도록 제한이 완화되었지만, 여전히 많은 드라이버와 도구가 이를 완전히 지원하지 않습니다. 따라서 안정적인 운영을 위해서는 필드 이름에 $와 마침표(.)를 사용하지 않는 것이 가장 좋은 방법(best practice)입니다.