Я хотел бы знать, существует ли соглашение для коллекций баз данных, например:
PageVisit
или page_visit
.
Существуют ли какие-либо преимущества/недостатки этих обозначений?
Я хотел бы знать, существует ли соглашение для коллекций баз данных, например:
PageVisit
или page_visit
.
Существуют ли какие-либо преимущества/недостатки этих обозначений?
Общие соглашения:
Примеры:
users
pagevisits
users.pagevisits
Соглашения о названии полей (должны) следовать одной и той же логике, хотя оболочка верблюда довольно распространена.
Просто избегайте использования дефисов в именах коллекций.
И это только потому, что, если вы используете cli из двух нижеследующих вызовов, первый недопустим JavaScript:
db.foo-bar.find();
db['foo-bar'].find();
Они оба функционально идентичны, но вторая немного более раздражает, чтобы печатать и не выполняет табуляцию.
Кроме того, преимущества/недостатки зависят от использования вами коллекций. Быть последовательным является более важным, чем вы выбираете.
В 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