programing

MongoDB에서 중첩 인덱스를 만드는 방법은 무엇입니까?

oldcodes 2023. 5. 14. 11:04
반응형

MongoDB에서 중첩 인덱스를 만드는 방법은 무엇입니까?

A. 색인 작성 방법nested가치관은?

B. 색인 작성 방법valuetwo?

{
    id: 00000,
    attrs: {
        nested:{
            value: value1,
            valuetwo: value2,
        }
    }
}

제가 여기서 찾아봤습니다. 가 알기로는 http://www.mongodb.org/display/DOCS/Indexes, 과 문서들은 중첩되지 않은 것들을 색인화하는 것에 대해 명확하지 않습니다.

최상위 필드에 색인을 작성하는 것처럼 다음과 같이 작성할 수 있습니다.

db.collection.createIndex({"attrs.nested.value": 1})

각 필드에 명시적으로 인덱스를 작성해야 합니다.

MongoDB는 인덱스 필드가 배열인 경우 멀티키 인덱스를 자동으로 생성하므로 멀티키 유형을 명시적으로 지정할 필요가 없습니다.

이는 시나리오의 두 가지 작업에 모두 효과적입니다.

db.coll.createIndex( { "addr.pin": 1 } )

시나리오 1 중첩 개체

{
  userid: "1234",
  addr: {
    pin:"455522"
  }
},
{
  userid: "1234",
  addr: {
    pin:"777777"
  }
}

시나리오 2 중첩 어레이

{
  userid: "1234",
  addr: [
    { pin:"455522" },
    { pin:"777777" },
  ]
}

https://docs.mongodb.com/manual/core/index-multikey/

A. 중첩된 모든 속성을 인덱싱하려면 다음과 같이 별도로 인덱싱해야 합니다.

db.collection.createIndex({"attrs.nested.value": 1});
db.collection.createIndex({"attrs.nested.valuetwo": 1});

이 작업은 다음을 사용하여 하나의 명령으로 수행할 수 있습니다.

db.collection.createIndexes([{"attrs.nested.value": 1}, {"attrs.nested.valuetwo": 1}]);

B. "값 2"만 색인화하려면:

db.collection.createIndex({"attrs.nested.valuetwo": 1})

작성 사용인덱스 오버보증확실한 인덱스인덱스는 버전 3.0.0부터 사용되지 않습니다.

이러한 답변이 작성되었기 때문에 이 문제를 해결하기 위한 새로운 기능이 있을 수 있습니다.

Mongodb에는 다양한 키를 포함하는 필드에 대한 인덱스를 만들 수 있는 와일드카드 인덱스가 있습니다.

설명서에서 다음을 참조하십시오.

필드가 중첩된 문서 또는 배열인 경우, 와일드카드 색인은 문서/열에 재귀적으로 나타나고 문서/열의 모든 스칼라 필드를 색인화합니다.

따라서 질문의 인덱스는 다음과 같이 구성됩니다.

db.collections.createIndex({ "attrs.nested.$**": 1 })

여러분은 여기에서 이것에 대해 더 읽을 수 있습니다!

이전의 대답들은 저에게 거의 심장마비를 일으켰습니다.

언급URL : https://stackoverflow.com/questions/9730136/how-to-create-a-nested-index-in-mongodb

반응형