MongoDb не может создать индекс - обнаружено исключение во время инициализации построителя индекса - PullRequest
0 голосов
/ 02 августа 2020

Когда я пытаюсь создать составной индекс на своем сервере Atlas, он не показывает ошибок, но индекс не создается.

Пробуя через оболочку, я получаю следующее:

MongoDB Enterprise mongos> db.myCollection.createIndex( {"user_id": "hashed", "identifier": 1, "timestamp": 1} )
{
    "raw" : {
        "atlas-lgwyih-shard-1/atlas-lgwyih-shard-01-00.kqohn.mongodb.net:27017,atlas-lgwyih-shard-01-01.kqohn.mongodb.net:27017,atlas-lgwyih-shard-01-02.kqohn.mongodb.net:27017" : {
            "ok" : 0,
            "errmsg" : "Caught exception during index builder initialization my-db.myCollection (c22f2095-1221-43cd-80af-13f2fb3afaff): 1 provided. First index spec: { ns: \"my-db.myCollection\", v: 2, key: { user_id: \"hashed\", identifier: 1.0, timestamp: 1.0 }, name: \"user_id_hashed_identifier_1_timestamp_1\" }",
            "code" : 16763,
            "codeName" : "Location16763"
        }
    },
    "code" : 16763,
    "codeName" : "Location16763",
    "ok" : 0,
    "errmsg" : "Caught exception during index builder initialization my-db.myCollection (c22f2095-1221-43cd-80af-13f2fb3afaff): 1 provided. First index spec: { ns: \"my-db.myCollection\", v: 2, key: { user_id: \"hashed\", identifier: 1.0, timestamp: 1.0 }, name: \"user_id_hashed_identifier_1_timestamp_1\" }",
    "operationTime" : Timestamp(1596400670, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1596400671, 4),
        "signature" : {
            "hash" : BinData(0,"oh8t17bzKDwsyxv4WzK5suDFP9U="),
            "keyId" : NumberLong("6855996587379516447")
        }
    }
}

Пока что у меня есть только индекс по умолчанию для коллекции:

MongoDB Enterprise mongos> db.getCollection("myCollection").getIndexes()
[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_",
        "ns" : "my-db.myCollection"
    }
]

Обратите внимание, что мне нужен этот индекс в этом порядке, потому что я хочу сегментировать коллекцию с ключом сегмента, находящимся на хешированном User ID.

Что вызывает эту ошибку?

1 Ответ

1 голос
/ 02 августа 2020

Ах, по какой-то причине после нескольких часов ударов головой о стену я просто подумал проверить, возможно ли создать составной индекс с одним хешируемым типом. Оказывается, это вызывает ошибку - wi sh это сообщение об ошибке было более ясным!

Кроме того, теперь это поддерживается в версии 4.4, как указано в комментариях ниже!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...