В предыдущих темах коллекция создавалась неявно автоматически при добавлении в нее первых данных. Но мы также можем создать ее явным образом,
применив метод 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
. То есть в итоге будут три разные коллекции, однако в плане
логической организации хранения данных, возможно, для кого-то так будет проще.