Самый быстрый способ найти документ в mongodb без использования поля _id - PullRequest
0 голосов
/ 01 мая 2019

Вот пример документа, который я собираюсь использовать.

{
    "_id"       : ObjectId("5cc6ccec131355bb173c64ba"),
    "username"  : "user1",
    "firstname" : "john",
    "lastname"  : "doe"
}

Мне нужно каждый раз находить документы, используя поле username.

Я использовал hashed index, но он не позволяет сделать его полем unique.

{
    "ok"       : 0,
    "errmsg"   : "Currently hashed indexes cannot guarantee uniqueness. Use a regular index.",
    "code"     : 16764,
    "codeName" : "Location16764"
}

Если есть около 1M элементов, какой самый быстрый способ найтипредмет по username полю?

1 Ответ

1 голос
/ 01 мая 2019

Вариант 1. Создание уникального индекса.Я не ожидаю проблем с производительностью даже с записями 1M.Я получаю приличную производительность даже с коллекциями размером более 1 миллиарда в наборе реплик из 5 элементов.

db.members.createIndex( { "username": 1 }, { unique: true } )

Вариант 2. Сохраните имя пользователя в поле _id, поскольку вы знаете, что оно уникально.Вы потеряете возможность использовать поле _id для определения того, когда была создана запись, поэтому вам понадобится сохранить другое поле с отметкой времени, если вам нужна эта возможность.

...