MongoDB データベースのリファレンス
前の章 MongoDB の関係では、データ構造ドキュメントを標準化するための MongoDB 参照について説明しました。
MongoDB 参照には 2 種類あります:
マニュアル参照
DBRefs
DBRefs とマニュアル参照
異なるコレクション (address_home、address_office、address_mailing) があるシナリオを考えてみましょう。 、など)さまざまな住所 (自宅の住所、オフィスの住所、電子メール アドレスなど) を保存します。
このように、別のアドレスを呼び出すときにコレクションを指定する必要もあります。ドキュメントが複数のコレクションのドキュメントを参照する場合は、DBRef を使用する必要があります。
DBRef を使用する
DBRef フォーム:
{ $ref : , $id : , $db : }
3 つのフィールドの意味は次のとおりです:
$ref: コレクション名
$id: 参照 ID
$db: データベース名、オプションパラメーター
次の例では、ユーザー データ ドキュメントは DBRef、フィールド アドレスを使用します。
{ "_id":ObjectId("53402597d852426020000002"), "address": { "$ref": "address_home", "$id": ObjectId("534009e4d852427820000002"), "$db": "w3cschoolcc"}, "contact": "987654321", "dob": "01-01-1991", "name": "Tom Benzamin" }
address DBRef フィールドは、参照されるアドレス ドキュメントが、id が 534009e4d852427820000002 の、address_home コレクションの下の w3cschoolcc データベースであることを指定します。
次のコードでは、$ref パラメーター (address_home コレクション) を指定して、コレクション内の指定された ID のユーザー アドレス情報を検索します:
>var user = db.users.findOne({"name":"Tom Benzamin"}) >var dbRef = user.address >db[dbRef.$ref].findOne({"_id":(dbRef.$id)})
上記の例は、address_home コレクション内のアドレス データを返します:
{ "_id" : ObjectId("534009e4d852427820000002"), "building" : "22 A, Indiana Apt", "pincode" : 123456, "city" : "Los Angeles", "state" : "California" }