Существует ли соглашение по названию коллекции в MongoDB? - PullRequest
69 голосов
/ 26 марта 2012

Я хотел бы знать, существует ли соглашение для коллекций баз данных, такое как:

PageVisit или page_visit.

Есть ли какие-либо преимущества / недостатки для этих обозначений?

Ответы [ 3 ]

74 голосов
/ 26 марта 2012

Общие соглашения:

  • Строчные имена : это позволяет избежать проблем с чувствительностью к регистру, поскольку имена коллекций MongoDB чувствительны к регистру .
  • Plural : более очевидно обозначить коллекцию чего-либо как множественное число, например, «файлы», а не «файл»
  • Без разделителей слов : позволяет избежать проблем, когдаразные люди (неверно) отдельные слова (имя пользователя <-> имя_пользователя, имя_первая <-> имя).Этот вопрос подлежит обсуждению в соответствии с несколькими людьми, присутствующими здесь, но при условии, что аргумент изолирован от имен коллекций, я не думаю, что это должно быть;) Если вы обнаружите, что улучшаете читабельность названия своей коллекции, добавив подчеркивание или верблюдназвание коллекции, вероятно, слишком длинное, или следует использовать подходящие периоды, что является стандартом для категоризации коллекции.
  • Точечная запись для коллекций с более высокой степенью детализации : дает некоторое представление о том, как связаны коллекции.Например, вы можете быть уверены, что можете удалить «users.pagevisits», если удалили «users», при условии, что люди, разработавшие схему, хорошо поработали;)

Примеры:

users
pagevisits
users.pagevisits

Соглашения об именах полей (должны) следовать некоторой логике, хотя в случае верблюдов это довольно распространено.

27 голосов
/ 26 марта 2012

Просто не используйте дефисы в именах вашей коллекции.

И это только потому, что если вы используете cli из двух приведенных ниже вызовов, первый неверный JavaScript:

db.foo-bar.find();
db['foo-bar'].find();

Они оба функционально идентичны, но второе немного более раздражает при наборе текста и не завершает табуляцию.

Кроме того, преимущества / недостатки зависят от вашего использования коллекций. Быть последовательным важнее, чем соглашение, которое вы выберете.

16 голосов
/ 20 февраля 2015

В http://docs.mongodb.org/manual/reference/limits/, в руководстве указано, что имена коллекций должны начинаться с подчеркивания ('_') или буквенного символа и не могут:

  • содержит $.
  • пустую строку (например, "").
  • содержит нулевой символ.
  • начинается с системы.префикс.(Зарезервировано для внутреннего использования.)

Однако, если вы следуете правилу и создаете коллекцию с '_' в качестве начальной буквы, например, "_TWII", вы столкнетесь с проблемами, когдаВы хотите отбросить коллекцию.Смотрите тест ниже и способ его исправить.Коллекция '_TWII' была создана в базе данных 'people'.

> show collections
_TWII
employees
system.indexes
> db._TWII.drop()
2015-02-19T16:34:56.738-0800 TypeError: Cannot call method 'drop' of undefined

> use admin
switched to db admin

> db.runCommand({renameCollection:"people._TWII",to:"people.TWII"})
{ "ok" : 1 }
> use people
switched to db people
> show collections
TWII
employees
system.indexes
> db.TWII.drop()
true
> show collections
employees
system.indexes
> 

Ярлык для удаления коллекции _TWII, находящейся в разделе 'people' db:

> db.createCollection('^TWII')
{ "ok" : 1 }
> db.getCollection('^TWII').drop()
true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...