Управление коллекцией

Последнее обновление: 29.07.2022

Явное создание коллекции

В предыдущих темах коллекция создавалась неявно автоматически при добавлении в нее первых данных. Но мы также можем создать ее явным образом, применив метод db.createCollection(name, options), где name - название коллекции, а options - необязательный объект с дополнительными настройками инициализации. Например:

db.createCollection("accounts")
{"ok" : 1}

Таким образом, создается коллекция accounts.

Переименование коллекции

В процессе работы, возможно, потребуется изменить название коллекции. Например, если при первом добавлении данных в ее названии была опечатка. И чтобы не удалять и затем пересоздавать коллекцию, следует использовать функцию renameCollection:

db.users.renameCollection("новое_название")

И если переименование пройдет удачно, то консоль отобразит:

{"ok" : 1}

Ограниченные коллекции

Когда мы отправляем запрос к бд на выборку, то MongoDB возвращает нам документы в том порядке, как правило, в котором они были добавлены. Однако такой порядок не всегда гарантируется, так как данные могут быть удалены, перемещены, изменены. Поэтому в MongoDB существует понятие ограниченной коллекции (capped collection). Подобная коллекция гарантирует, что документы будут располагаться в том же порядке, в котором они добавлялись в коллекцию. Ограниченные коллекции имеют фиксированный размер. И когда в коллекции уже нет места, наиболее старые документы удаляются, и в конец добавляются новые данные.

В отличие от обычных коллекций ограниченные мы можем задать явным образом. Например, создадим ограниченную коллекцию с названием profiles и зададим для нее размер в 9500 байт:

db.createCollection("profiles", {capped:true, size:9500})

И после удачного создания коллекции консоль выведет:

{"ok":1}

Также можно ограничить количество документов в коллекции, указав его в параметре max:

> db.createCollection("profiles", {capped:true, size:9500, max: 150})

Однако при таком способе создания коллекции следует учитывать, что если все место под коллекцию заполнено (например, выделенные нами 9500 байтов), а количество документов еще не достигло максимума, в данном случае 150, то в этом случае при добавлении нового документа самый старый документ будет удаляться, а на его место будет вставляться новый документ.

При обновлении документов в таких коллекциях надо помнить, что документы не должны расти в размерах, иначе обновление не удастся произвести.

Также нельзя удалять документы из подобных коллекций, можно только удалить всю коллекцию.

Подколлекции

Для упрощения организации данных в коллекциях мы можем использовать подколлекции. Например, данные по коллекции users надо разграничить на профили и учетные данные. И мы можем использовать создать коллекции db.users.profiles и db.users.accounts. При этом они не будут никак связаны с коллекцией users. То есть в итоге будут три разные коллекции, однако в плане логической организации хранения данных, возможно, для кого-то так будет проще.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850