Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 'ReferenceError: not defined' 오류 없이 컬렉션을 올바르게 생성하는 방법

MongoDB에서 'ReferenceError' 오류가 발생하는 이유

MongoDB 셸에서 db 객체 없이 createCollection()을 단독으로 호출하면 "ReferenceError: createCollection is not defined"와 같은 오류가 발생합니다. 그 이유는 이 메서드가 전역 함수가 아니라 데이터베이스 객체(db)에 속한 메서드이기 때문입니다.

올바른 컬렉션 생성 방법

컬렉션을 정상적으로 생성하려면 반드시 MongoDB 객체인 db를 통해 메서드를 호출해야 합니다. 기본 문법은 다음과 같습니다.

db.createCollection("yourCollectionName");

실제 실행 예제

위 문법을 실제로 적용하여 'sample' 데이터베이스에서 'employeeInformation' 컬렉션을 생성해 보겠습니다.

> use sample;
switched to db sample

> db.createCollection("employeeInformation");
{ "ok" : 1 }

{ "ok" : 1 } 응답이 반환되면 컬렉션이 성공적으로 생성된 것입니다.

생성된 컬렉션 목록 확인하기

'sample' 데이터베이스에 포함된 모든 컬렉션을 조회하려면 아래 명령어를 실행합니다.

> db.getCollectionNames();

실행 결과는 다음과 같으며, 새로 생성한 'employeeInformation'이 목록에 포함되어 있는지 확인할 수 있습니다.

[
    "arraySizeErrorDemo",
    "atleastOneMatchDemo",
    "basicInformationDemo",
    "combinedAndOrDemo",
    "convertSQLQueryDemo",
    "copyThisCollectionToSampleDatabaseDemo",
    "countOrSizeDemo",
    "distinctOnMultipleFieldsDemo",
    "documentWithAParticularFieldValueDemo",
    "employee",
    "employeeInformation",
    "findListOfIdsDemo",
    "findMimimumElementInArrayDemo",
    "findSubstring",
    "getAllRecordsFromSourceCollectionDemo",
    "getElementWithMaxIdDemo",
    "insertDocumentWithDateDemo",
    "internalArraySizeDemo",
    "keepTwoColumnsUniqueDemo",
    "largestDocumentDemo",
    "makingStudentInformationClone",
    "nestedArrayDemo",
    "oppositeAddToSetDemo",
    "prettyDemo",
    "projectionAnElementDemo",
    "replacingEntireDocumentDemo",
    "returnOnlyUniqueValuesDemo",
    "searchInInnerDemo",
    "selectItemDemo",
    "selectWhereInDemo",
    "sourceCollection",
    "specificFieldDemo",
    "studentInformation",
    "sumOfValueDemo",
    "sumTwoFieldsDemo",
    "truncateDemo",
    "updateFieldIfValueIsGreaterDemo",
    "updateInformation",
    "updateSubObjectDemo",
    "userInformation"
]

알아두면 좋은 추가 팁

  • 자동 생성: MongoDB는 문서를 삽입할 때 대상 컬렉션이 없으면 자동으로 생성하므로, 명시적인 생성이 항상 필요한 것은 아닙니다.
  • 옵션 지정: Capped Collection처럼 크기 제한이 있는 컬렉션을 만들려면 두 번째 인수로 옵션 객체를 전달하면 됩니다. 예: db.createCollection("logs", { capped: true, size: 5242880 })
  • 이름 규칙: 컬렉션 이름은 대소문자를 구분하며, 빈 문자열이나 $, 널(null) 문자 등 특수 문자는 사용할 수 없으니 주의해야 합니다.