Ich würde gerne wissen, ob es eine Konvention für Datenbanksammlungen gibt, wie zum Beispiel:
PageVisit
oder page_visit
.
Gibt es Vor- / Nachteile für diese Notationen?
Antworten:
Die allgemeinen Konventionen sind:
Beispiele:
users
pagevisits
users.pagevisits
Feldnamenkonventionen (sollten) folgen der gleichen Logik, obwohl Kamelhüllen ziemlich häufig sind.
Vermeiden Sie einfach die Verwendung von Bindestrichen in Ihren Sammlungsnamen.
Und das nur, weil, wenn Sie die CLI der beiden folgenden Aufrufe verwenden, das erste ungültiges JavaScript ist:
db.foo-bar.find();
db['foo-bar'].find();
Sie sind beide funktional identisch, aber die zweite ist etwas nerviger zu tippen und nicht vollständig.
Abgesehen davon hängen die Vor- und Nachteile von Ihrer Nutzung der Sammlungen ab. Konsequent zu sein ist wichtiger als die von Ihnen gewählte Konvention.
:
für Namespace-Sammlungsnamen wie in gültig foo:bar
?
db["\n"].insert({});
- kein Fehler. Die Dinge, die zu beachten sind, sind meistens Bequemlichkeit mit dem Treiber, den Sie verwenden.
In http://docs.mongodb.org/manual/reference/limits/ heißt es im Handbuch, dass die Sammlungsnamen mit einem Unterstrich ('_') oder einem Buchstaben beginnen sollten und nicht:
- enthalten die $.
- sei eine leere Zeichenkette (zB "").
- enthalten das Nullzeichen.
- Beginnen Sie mit dem System. Präfix. (Reserviert für den internen Gebrauch.)
Wenn Sie jedoch der Regel folgen und eine Sammlung mit '_' als Anfangsbuchstaben erstellen, z. B. "_TWII", treten Probleme auf, wenn Sie die Sammlung löschen möchten. Sehen Sie sich den Test unten an und wie Sie ihn beheben können. Die Sammlung '_TWII' wurde unter 'people' db erstellt.
> 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
>
Eine Verknüpfung zum Löschen der _TWII-Sammlung unter 'people' db:
> db.createCollection('^TWII')
{ "ok" : 1 }
> db.getCollection('^TWII').drop()
true