Блок кода static{...}
, обязательно выполняющийся, в момент подгрузки класса в ОЗУ:
private static final MongoCollection<Document> LINKS_COLLECTION;
static {
final MongoClient mongo = new MongoClient("localhost", 27017);
final MongoDatabase db = mongo.getDatabase("hexlet");
LINKS_COLLECTION = db.getCollection("links");
}
static{...}
позволяет достать нужную коллекцию из БД и сохранить на нее ссылку в ранее объявленную LINKS_COLLECTION. По завершению своей работы, блок кода в static{...}
, будет удален из поля видимости класса и не будет занимать место. Опять же - это все происходит в момент подгрузки класса в оперативную память.
Индексы позволяют упорядочить данные по определенному полю, что впоследствии ускорит поиск. Например, если мы в своем приложении или задаче, как правило, выполняем поиск по полю shortUrl
, то мы можем индексировать коллекцию по этому полю командой:
> db.links.createIndex({"shortUrl" : 1})
Таким образом с помощью метода createIndex устанавливается индекс по полю shortUrl
. MongoDB
позволяет установить до 64 индексов на одну коллекцию.
Для того чтобы поле shortUrl
было уникальным, достаточно добавить флаг unique. Вот так:
> db.links.createIndex({"shortUrl" : 1}, {"unique" : true})
В тоже время тут есть свои тонкости. Так, представим, что поле shortUrl
в нашем документе пустое (не определено)... В этом случае для добавляемого документа автоматически создается ключ shortUrl
со значением null
. Поэтому при добавлении второго документа, в котором не определен ключ shortUrl
, будет выброшено исключение, так как ключ shortUrl
со значением null
уже присутствует в коллекции.
Естественно можно задать уникальный индекс для обоих полей:
> db.links.createIndex({"shortUrl" : 1, "longUrl" : 1}, {"unique" : true})
Однако в этом случае все добавляемые документы должны иметь уникальные значения для обоих полей. Кроме того, тут есть свои ограничения. Например, значение поля, по которому идет индексация, не должно быть больше 1024 байт.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт