Подтвердить что ты не робот

Есть ли соглашение, чтобы назвать коллекцию в MongoDB?

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

PageVisit или page_visit.

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

4b9b3361

Ответ 1

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

  • Имена нижнего регистра: это позволяет избежать проблем с чувствительностью к регистру, поскольку имена коллекции MongoDB чувствительны к регистру.
  • Плюралирование: более очевидно, чтобы обозначить коллекцию чего-либо как множественного числа, например. "файлы", а не "файл"
  • Разделители слов: избегает проблем, когда разные люди (некорректно) разделяют слова (имя пользователя ↔ имя_пользователя, first_name ↔ firstname). Этот вопрос предназначен для обсуждения в соответствии с несколькими людьми здесь, но при условии, что аргумент изолирован от имен коллекции. Я не думаю, что это должно быть;) Если вы обнаружите, что улучшаете читабельность имени своей коллекции, добавляя символы подчеркивания или camelCasing имя коллекции, вероятно, слишком длинное или должно использовать периоды по мере необходимости, что является стандартом для категоризации коллекции.
  • Точечная нотация для более подробных коллекций. Дает некоторое представление о том, как связаны коллекции. Например, вы можете быть разумно уверены, что можете удалить "users.pagevisits", если вы удалили "пользователей", если люди, которые разработали схему, сделали хорошую работу;)

Примеры:

users
pagevisits
users.pagevisits

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

Ответ 2

Просто избегайте использования дефисов в именах коллекций.

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

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

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

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

Ответ 3

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

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

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

> 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