복붙노트

[MONGODB] 스파 스 인덱스와 몽고에 null 값

MONGODB

스파 스 인덱스와 몽고에 null 값

내가 올바르게 스파 스 인덱스를 이해 모르겠어요.

나는 fbId에 스파 스 고유 인덱스를

{
    "ns" : "mydb.users",
    "key" : {
        "fbId" : 1
    },
    "name" : "fbId_1",
    "unique" : true,
    "sparse" : true,
    "background" : false,
    "v" : 0
}

그리고 그 날이 fbId로서 null 레코드를 삽입 할 수 있도록 할 기다리고 있었다,하지만 그건 중복 키 예외가 발생합니다. 그것은 단지 fbId 속성이 완전히 제거 된 경우 나 삽입 할 수 있습니다.

스파 스 인덱스는 처리 아닌가요?

해결법

  1. ==============================

    1.스파 스 인덱스는 인덱스 필드를 그리워 문서를 포함하지 않습니다. 필드가 존재하고 널 (null)의 값을 갖고있는 경우, 그것은 여전히 ​​색인이 될 것입니다. 분야 및 응용 프로그램에 대해 동일한 널 모양에의 평등의 누락됩니다 당신이 fbId의 고유성을 유지하려는 경우이 값을 때까지 그래서, 그냥 삽입하지 마십시오.

    스파 스 인덱스는 인덱스 필드를 그리워 문서를 포함하지 않습니다. 필드가 존재하고 널 (null)의 값을 갖고있는 경우, 그것은 여전히 ​​색인이 될 것입니다. 분야 및 응용 프로그램에 대해 동일한 널 모양에의 평등의 누락됩니다 당신이 fbId의 고유성을 유지하려는 경우이 값을 때까지 그래서, 그냥 삽입하지 마십시오.

    당신이 많은 문서가 있지만 그 중 작은 부분이 어떤 필드를 포함 할 때 스파 스 인덱스를해야하고, 신속하게 해당 필드로 문서를 찾을 수 있어야합니다. 일반 인덱스가 너무 비싼 것 만들기, 당신은 당신이에 관심이하지 않는 문서를 색인에 귀중한 RAM을 낭비 것입니다.

  2. ==============================

    2.인덱스의 최대 성능을 보장하기 위해, 우리는 당신이 인덱스를 수행하는 분야가 포함되지 않은 문서를 색인 생략 할 수 있습니다. 이 MongoDB를 수행하려면 다음과 같이 작동 스파 스 속성이 있습니다 :

    인덱스의 최대 성능을 보장하기 위해, 우리는 당신이 인덱스를 수행하는 분야가 포함되지 않은 문서를 색인 생략 할 수 있습니다. 이 MongoDB를 수행하려면 다음과 같이 작동 스파 스 속성이 있습니다 :

    db.addresses.ensureIndex( { "secondAddress": 1 }, { sparse: true } );
    

    이 지수는 모든 기록한 secondAddress 필드를 포함하지 않는 및 쿼리를 수행 할 때, 그 문서를 검사하지 않습니다를 생략합니다.

    나 기본 인덱스와 그들의 속성 중 일부에 대한이 문서를 공유 할 수 있습니다 :

    지리 공간, 텍스트, 해시 인덱스와 독특하고 희소 속성 : http://mongodbspain.com/en/2014/02/03/mongodb-indexes-part-2-geospatial-2d-2dsphere/

  3. ==============================

    3.

    
    {a:1, b:5, c:2}
    {a:8, b:15, c:7}
    {a:4, b:7}
    {a:3, b:10}
    

    이제 우리는 위의 문서에 인덱스를 생성하고자한다고 가정하자. A와 B에 인덱스를 생성하는 것은 문제가되지 않습니다. 그러나 우리는 C에 인덱스를 만드는 데 무엇을해야하는 경우. 널 (null) 값이이 개 문서에 대한 중복되기 때문에 고유 제한 조건은 C 키를 작동하지 않습니다. 이 경우 해결책은 스파 스 옵션을 사용하는 것입니다. 이 옵션은 키를 벗어났습니다 문서를 포함하지 않도록 데이터베이스를 알려줍니다. 우려의 명령은 db.collectionName.createIndex입니다 (: {1 일} {독특한 : 사실, 스파 스 : TRUE}). 스파 스 인덱스는 우리뿐만 아니라 공간을 적게 사용할 수 있습니다.

  4. from https://stackoverflow.com/questions/8608567/sparse-indexes-and-null-values-in-mongo by cc-by-sa and MIT license