2016-09-18 8 views
1

MongoDB docsドキュメントとMongoDBドキュメント、1対多の例、なぜ参照が異なるのですか?

モデル1対多の関係が

// Publisher. 
{ 
    _id: "oreilly", 
    name: "O'Reilly Media", 
} 

// Book. 
{ 
    _id: 123456789, 
    title: "MongoDB: The Definitive Guide", 
    publisher_id: "oreilly" 
} 

// Book. 
{ 
    _id: 234567890, 
    title: "50 Tips and Tricks for MongoDB Developer", 
    publisher_id: "oreilly" 
} 
を参照します(...略す)

...多くの関係1つの例を示し、

書籍_idが生成されているように見える間に、発行者_idが論理的で人間が判読可能な名前である理由surrogate keys?

_idはすべて値を生成しませんか?

MongoDBでは、データそのものをユニークなキーとして使用することがありますが、時にはそれを使用しないことがありますか?

もしそうなら、普通の名前( "mary"、 "joe"、 "exxon")をいつ使うのですか?

答えて

1

すべての_idが生成されるわけではありませんか?

MongoDBは、ユーザーが提供していない場合にのみ_idを自動生成します。

MongoDBでは、通常、データ自体を というユニークキーとして使用することはありますか?

はい、データをキーとして使用できます。 _id値は、文書を正しく識別するためにコレクション内で一意でなければなりません。上記の条件を満たす場合、ドキュメント内の任意のパラメータを_idとして設定することができます。 _idがコレクション内で一意でない場合、重複キーエラーがスローされます。

もしそうなら、私たちは普通の名前(「メアリー」、「ジョー」、「エクソン」)を使用しない、と は我々が生成された値をする場合を好むのですか?

パラメータ(またはパラメータグループ)がなく、ドキュメントを一意に識別する場合は、生成された_idを優先します。たとえば、同じ名前の別の人物を追加する状況が生じる可能性があるため、人物の名前を使用すると機能しません。しかし、書籍のISBN番号を考えてみると、書籍を一意に識別します。このようなパラメータは_idとして使用できます。

追記:

  • 自動生成_idは、(使用することができる)のタイムスタンプ値が埋め込まれています。
  • 自動生成_idで重複する値を心配する必要はありません。
  • しかし、ユーザーが指定した_id値は、アプリケーション/ドメイン固有のものである可能性があります。
関連する問題