Docs Menu
Docs Home
/

문서

MongoDB 데이터 레코드를 BSON 문서로 저장합니다. BSON 추가 데이터 유형이 있는 JSON 문서의 바이너리 표현입니다. BSON 사양은 bsonspec.org 를 참조하세요.BSON types도 참조하세요.

MongoDB 문서입니다.

문서는 필드-값 쌍으로 구성되며 다음과 같은 구조를 갖습니다.

{
field1: value1,
field2: value2,
field3: value3,
...
fieldN: valueN
}

필드의 값은 다른 문서, 배열 및 문서 배열을 포함한 모든 BSON 데이터 유형이 될 수 있습니다. 예를 들어 다음 문서에는 다양한 유형의 값이 포함되어 있습니다.

var mydoc = {
_id: ObjectId("5099803df3f4948bd2f98391"),
name: { first: "Alan", last: "Turing" },
birth: new Date('Jun 23, 1912'),
death: new Date('Jun 07, 1954'),
contribs: [ "Turing machine", "Turing test", "Turingery" ],
views : Long(1250000)
}

위의 필드에는 다음과 같은 데이터 유형이 있습니다.

  • _id ObjectId

  • name firstlast 필드가 포함된 내장된 문서를 보유합니다.

  • birth 날짜 유형의 값을 death 보유합니다.

  • contribs 문자열 배열

  • views NumberLong 유형의 값을 보유합니다.

필드 이름은 특정 제한 사항 및 요구 사항이 있는 문자열입니다.

필드 이름에 대한 일반적인 제한 사항은 다음과 같습니다.

  • 필드 이름에는 null 문자를 포함 할 수 없습니다.

  • 서버는 점(.)과 달러 기호($)가 포함된 필드 이름의 저장을 허용합니다.

  • MongoDB 5.0은 필드 이름에 ($) 및 (.)를 사용에 대한 지원을 개선했습니다.몇 가지 제한 사항이 있습니다. 자세한 내용은 필드 이름 고려 사항을 참조하십시오.

필드 이름은 다음 고유성 기준을 충족해야 합니다.

  • 각 필드 이름은 문서 내에서 고유해야 합니다. 문서에 중복 필드가 있는 경우 MongoDB CRUD 작업이 예기치 않게 작동할 수 있으므로 중복 필드가 있는 문서를 저장해서는 안 됩니다.

  • MongoDB 필드 이름이 중복된 문서 삽입을 지원 하지 않습니다. 일부 BSON 빌더 이러한 문서 생성을 지원 수 있지만, 삽입이 성공했거나 성공한 것처럼 보이더라도 MongoDB 해당 문서를 지원 하지 않습니다.

  • 필드 이름이 중복된 문서의 업데이트는 업데이트 성공했거나 성공한 것처럼 보이더라도 지원되지 않습니다.

예시 를 들어, 필드 이름이 중복된 BSON 문서 MongoDB 운전자 통해 삽입하면 운전자 삽입 전에 중복 값을 조용히 삭제하거나 중복 필드가 포함된 유효하지 않은 문서 삽입될 수 있습니다. 이러한 문서를 쿼리하면 일관되지 않은 결과가 나타납니다.

MongoDB 부터 문서 6.1 중복된 필드 이름이 있는지 validate 확인하려면 full 필드 로 설정하다 상태에서 명령을 true 사용합니다. 모든 MongoDB 버전에서 $objectToArray 집계 연산자 사용하여 문서 중복된 필드 이름이 있는지 확인합니다.

참고

필드 와 관련된 제한 사항은 _id _id 필드를 참조하세요.

MongoDB 표기법 사용하여 배열 요소와 내장된 문서 필드에 액세스 .

0부터 시작하는 인덱스 위치로 배열 요소를 지정하거나 액세스 하려면 점 표기법 사용하여 배열 이름과 0부터 시작하는 인덱스 위치를 연결하고 결과를 따옴표로 묶습니다.

"<array>.<index>"

예를 들어 문서에 다음과 같은 필드가 있다고 가정해 보겠습니다.

{
...
contribs: [ "Turing machine", "Turing test", "Turingery" ],
...
}

contribs 배열 의 세 번째 요소를 지정하려면 "contribs.2"을 사용합니다.

배열을 쿼리하는 예시는 다음을 참조하세요.

  • $[] 업데이트 작업을 위한 모든 위치 연산자입니다,

  • $[<identifier>] 업데이트 작업을 위한 필터링된 위치 연산자입니다,

  • $ 업데이트 작업을 위한 위치 연산자,

  • $ 배열 인덱스 위치를 알 수 없는 경우의 프로젝션 연산자

  • 배열을 쿼리하여 배열이 있는 점 표기법 예시를 확인합니다.

내장된 문서 의 필드 지정하거나 액세스 하려면 점 표기법 사용하여 내장된 문서 이름과 필드 이름을 연결하고 결과를 따옴표로 묶습니다.

"<embeddedDocument>.<field>"

예를 들어 문서에 다음과 같은 필드가 있다고 가정해 보겠습니다.

{
...
name: { first: "Alan", last: "Turing" },
contact: { phone: { type: "cell", number: "111-222-3333" } },
...
}
  • name에서 last 필드 지정하려면 "name.last"를 사용합니다.

  • 중첩된 phone 문서 에서 number 필드 지정하려면 다음을 사용합니다: "contact.phone.number".

경고

파티션 필드에는 점(.)이 포함된 필드 이름을 사용할 수 없습니다.

내장된 문서를 쿼리하는 예시는 다음을 참조하세요.

MongoDB 문서에는 쿼리 동작 및 애플리케이션 성능에 영향을 줄 수 있는 문서 크기 및 필드 순서와 같은 특정 속성이 있습니다.

최대 BSON 문서 크기는 16 메비바이트입니다.

최대 문서 크기는 단일 문서 전송 중에 과도한 양의 RAM 이나 과도한 양의 대역폭을 사용할 수 없도록 하는 데 도움이 됩니다. 최대 크기보다 큰 문서를 저장 위해 MongoDB GridFS API 제공합니다. GridFS 에 대한 자세한 내용은 및 해당 mongofiles 운전자설명서를 참조하세요.

BSON 문서의 필드는 JavaScript 객체와 달리 순서가 지정됩니다.

쿼리의 경우 필드 순서 동작은 다음과 같습니다.

  • 문서를 비교할 때 필드 순서는 중요합니다. 예시 들면 다음과 같습니다.

    • {a: 1, b: 1} 같음 {a: 1, b: 1}

    • {a: 1, b: 1} 같지 않음 {b: 1, a: 1}

  • 쿼리 엔진 효율적인 실행을 위해 필드를 재정렬할 수 있습니다. 필드 재정렬은 중간 및 최종 쿼리 결과에서 발생할 수 있으며 다음 프로젝션 연산자를 사용하여 발생할 수 있습니다.

중요

일부 작업은 필드의 순서를 변경할 수 있으므로 위의 프로젝션 연산자를 사용하는 쿼리의 결과에서 특정 필드 순서에 의존하지 마세요.

쓰기 조작의 경우 MongoDB는 다음과 같은 경우를 제외하고 문서 필드의 순서를 유지합니다.

  • _id 필드는 항상 문서에서 첫 번째 필드입니다.

  • renaming개의 필드 이름이 포함된 업데이트는 문서에서 필드의 순서를 변경할 수 있습니다.

MongoDB 에서 표준 컬렉션 에 저장된 각 문서 기본 키 역할을 하는 고유한 _id 필드 필요합니다. 삽입된 문서 _id 필드 생략된 경우, MongoDB 운전자 필드 _id 에 대한 ObjectId를 자동으로 생성합니다.

이는 upsert: true를 사용하여 업데이트 작업을 통해 삽입된 문서에도 적용됩니다.

참고

Time Series 컬렉션에서는 MongoDB 필드 에 인덱스 생성하지 않기 때문에 문서에 고유한 _id 필드 필요하지 _id 않습니다.

동작 및 제약 조건:

  • 컬렉션 만들 때 MongoDB 기본값 으로 _id 에 고유 인덱스 만듭니다.

  • _id 필드 는 항상 문서 의 첫 번째 필드 입니다. 서버 _id 필드 없는 문서 먼저 수신하면 필드 문서 의 시작 부분으로 이동합니다.

  • _id 하위 필드 이름은 ($) 기호로 시작할 수 없습니다.

  • 필드 배열 , 정규식 _id 또는 정의되지 않음을 제외한 모든 BSON 데이터 유형 포함될 수 있습니다.

일반적인 _id 값 옵션:

다음은 _id 필드 의 값을 저장하는 일반적인 옵션입니다.

  • ObjectId를 사용합니다.

  • 가능한 경우 자연 고유 식별자를 사용합니다. 이렇게 하면 공간이 절약되고 추가 인덱스가 필요하지 않습니다.

  • 자동 증가 숫자를 생성합니다.

  • 컬렉션 및 _id 인덱스 에 효율적인 UUID 저장 위해 UUID를 BSON BinData 유형으로 생성합니다.

    BinData 유형의 인덱스 키는 다음과 같은 경우 인덱스에 더 효율적으로 저장됩니다.

    • 이진 하위 유형 값은 0~7 또는 128~135 범위 내에 있습니다.

    • 바이트 배열의 길이는 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24 또는 32입니다.

  • 드라이버의 BSON UUID 기능을 사용하여 UUID를 생성합니다. 드라이버 구현에서는 UUID 직렬화 및 역직렬화 로직을 다르게 구현할 수 있으며, 이는 다른 드라이버와 완전히 호환되지 않을 수 있습니다. UUID 상호 운용성에 관한 자세한 내용은 드라이버 설명서를 참조하세요.

참고

대부분의 MongoDB 드라이버 클라이언트는 _id 필드를 포함하고 MongoDB에 삽입 작업을 보내기 전에 ObjectId를 생성합니다. 하지만 클라이언트가 _id 필드 없이 문서를 보내면 mongod_id 필드를 추가하고 ObjectId를 생성합니다.

데이터 레코드를 정의하는 것 외에도 MongoDB 쿼리 및 데이터 조작 작업을 포함한 여러 다른 컨텍스트에서 문서 구조를 사용합니다.

쿼리 필터하다 문서는 읽기, 업데이트 및 삭제 작업에 대한 조건을 지정합니다.

<field>:<value> 표현식을 사용하여 같음 조건과 쿼리 연산자 표현식을 지정할 수 있습니다.

{
<field1>: <value1>,
<field2>: { <operator>: <value> },
...
}

예를 들면 다음과 같습니다.

업데이트 연산자를 사용하여 필드 수정을 지정할 수 있습니다.

{
<operator1>: { <field1>: <value1>, ... },
<operator2>: { <field2>: <value2>, ... },
...
}

예제는 컬렉션의 문서 업데이트를 참조하세요.

인덱스 사양 문서는 인덱스 할 필드와 해당 유형을 정의합니다.

{ <field1>: <type1>, <field2>: <type2>, ... }

돌아가기

개요

이 페이지의 내용