回答:
簡潔にまとめる:小さなオブジェクトのストレージの最適化、SERVER-863。ばかげているが本当だ。
ここでは、関係データベースに適用されるのとほぼ同じ規則を適用する必要があると思います。そして何十年経っても、RDBMSテーブルの名前を単数形にするか複数形にするかはまだ合意されていません...
MongoDBはJavaScriptを話すため、キャメルケースのJS命名規則を利用します。
MongoDBの公式ドキュメントでは、アンダースコアを使用できると記載されており、組み込みの識別子も指定されています_id
(ただし、これは_id
、プライベート、内部、表示、編集を意図したものではない可能性があります。
_id
は、通常、キーが内部/秘密キーであることを示す一般的なJavaScript規則に従うように、アンダースコアが前に付いています。つまり、は_id
編集したり、コレクションのデータを表示するユーザーに提示したりすることを意図したものではありません。
データベース
MongoDBは良い例を述べています:
使用するデータベースを選択するには、mongoシェルで、次の例のように、use <db>ステートメントを発行します。
myDBを使用するmyNewDBを
使用する
コンテンツ:https : //docs.mongodb.com/manual/core/databases-and-collections/#databases
コレクション
小文字の名前:大文字と小文字の区別の問題を回避し、MongoDBコレクション名は大文字と小文字を区別します。
複数形:何かのコレクションに複数形のラベルを付けるほうがわかりやすい。たとえば、「ファイル」ではなく「ファイル」
>単語の区切り文字なし:異なる人が(誤って)単語を区切る問題を回避します(ユーザー名<->ユーザー名、最初の名前<->名
)。これは、この
周りの数人の人々によると議論の余地がありますが、引数がコレクション名に分離されているとすれば、そうすべきではないと思います;)
アンダースコアまたは
キャメルを追加してコレクション名の可読性を向上させる場合名前が長すぎるか
、コレクションの
分類の標準である適切な期間を使用する必要があります。より詳細なコレクションのドット表記:コレクションがどのように関連しているかを示します。たとえば、「users」を削除した場合、スキーマを設計した人がうまく機能していれば、「users.pagevisits」も削除できると合理的に確信できます。
内容:http : //www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html
コレクションについては、MongoDBの公式ドキュメントが見つかるまで、これらの推奨パターンに従っています。
これに関する規則が指定されていない場合でも、1対1の関係の場合、Mongoのドキュメントで参照されているコレクションにちなんで、手動参照は一貫して命名されます。名前は常に構造に従います<document>_id
。
たとえば、dogs
コレクションでは、ドキュメントには次のような名前の外部ドキュメントへの手動参照があります。
{
name: 'fido',
owner_id: '5358e4249611f4a65e3068ab',
race_id: '5358ee549611f4a65e3068ac',
colour: 'yellow'
...
}
これは、_id
すべてのドキュメントの識別子に名前を付けるというモンゴの規則に従います。
owner_id
コレクションの命名規則
コレクションに名前を付けるには、いくつかの注意事項があります。
データベースで使用可能なさまざまなドライバーはコレクション名で「$」をサポートしていないため、コレクション名に文字「$」を含めない方が良いでしょう。
データベース名を作成する際の注意事項は次のとおりです。
詳細については。以下のリンクを確認してください:http : //www.tutespace.com/2016/03/schema-design-and-naming-conventions-in.html
個人的な好みだと思います。私の好みは、SQL Serverで.NETのNHibernateを使用することから来ているため、おそらく他の人が使用するものとは異なります。
正直なところ、プロジェクトで一貫している限り、それほど問題ではありません。仕事に取り掛かって、細かいことまで気にしないでください:P
SERVER-863が取得されるまで、特に多くのレコードがある場合は、フィールド名をできるだけ短くすることをお勧めします。
ユースケースによっては、フィールド名がストレージに大きな影響を与える可能性があります。これはすべてのユーザーにプラスの影響を与えるため、これがMongoDbの優先度が高くない理由を理解できません。他に何もない場合は、帯域幅とストレージのコストについて2度考えなくても、フィールド名をより説明的にすることができます。
投票してください。