次のようなデータベースコレクションの規則があるかどうかを知りたいのですが。
PageVisit
またはpage_visit
。
これらの表記に長所/短所はありますか?
回答:
一般的な規則は次のとおりです。
例:
users
pagevisits
users.pagevisits
キャメルケースはかなり一般的ですが、フィールド名の規則は同じロジックのいくつかに従う必要があります。
コレクション名にハイフンを使用しないでください。
これは、以下の2つの呼び出しのCLIを使用する場合、最初の呼び出しが無効なJavaScriptであるためです。
db.foo-bar.find();
db['foo-bar'].find();
どちらも機能的には同じですが、2つ目は入力が少し面倒で、タブで完了しません。
それとは別に、長所/短所はコレクションの使用に依存します。一貫性を保つことは、どの規則を選択するかよりも重要です。
:
のように、コレクション名を名前空間を有効ためfoo:bar
?
db["\n"].insert({});
-エラーなし。考慮すべきことは、ほとんどの場合、使用しているドライバーの利便性です。
で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
>
'people' dbの下にあるときに_TWIIコレクションを削除するためのショートカット:
> db.createCollection('^TWII')
{ "ok" : 1 }
> db.getCollection('^TWII').drop()
true
MongoDBにはいくつかの命名規則があります。それらの1つは、データベース名で大文字と小文字が区別されないことです。また、mongoは、指定されていない場合、コレクション名を複数形にします。「コース」は「コース」になります。
MongoDBではデータベース名で大文字と小文字が区別されないため、データベース名は文字の大文字と小文字だけで異なることはできません。
それらのために、すべてのコレクションに小文字で特殊文字なしで名前を付けるようにしてください。特にMongooseを使用している場合は、多くのエラーを回避できます。マングースには、いくつかの奇妙なクエリの特異性があります。
たとえば、「courses」という名前のコレクションがある場合、モデルを構造化する方法は次のとおりです。
const LawModel = mongoose.model(
"course",
new mongoose.Schema({
id: String,
name: String,
}),
「コース」がどのように特異であるかに注意してください。マングースは複数形になるため、空の配列「[]」が表示される場合があります。->存在しないコレクションをクエリしています。
モデルの名前を変更して調整してみてください。