私は、結合についての情報と、それらがどのようにしてMongoDB
内で動作するかを探しています。 NoSQLデータベースの背後にある大量の機能は、文書内のすべての情報を保存することであり、その文書にはできるだけ多くの情報を格納して複数のクエリを実行する必要がないことに感謝します。MongoDB:コレクションを1つの文書に結合する
一貫性の問題のリスクを最小限に抑えるために、データの重複を最小限に抑えたいシナリオがいくつかあることに感謝します。
ドキュメント参照を使用する場合、単一のドキュメントを返す方法はありますか?私は$lookup
関数を試してみましたが、適切な結果を返す一方、すべての配列エントリに対して1つのドキュメントを返します。
お客様:
{
_id: ObjectId("578d706916f07969c4b0cad1"),
name: "fred",
orders: [ObjectId("578d706916f07969c4b0cad2"),ObjectId("578d706916f07969c4b0cad3")]
}
受注:
次のような構造と仮定すると、検索を使用して
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [a,b,c,d]
},
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [x,y,z]
}
を、私は2つの文書、顧客と各注文の1の結果を得ることができますデータが追加されましたが、配列情報または注文情報を持つ単一のドキュメント(embedded document
)を探しています。すなわち以下の構造
{
_id: ObjectId("578d706916f07969c4b0cad1"),
name: "fred",
orders: [
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [a,b,c,d]
},
{
_id: ObjectId("578d706916f07969c4b0cad2"),
date: xxxx,
items: [x,y,z]
}]
}
これはMongoDB
内で可能ですか?または、join
プロセスがSQLデータベースと非常によく似ているため、データを結合しようとすると複製された顧客情報が返されますか?私は、データがnode
のようなアプリケーション内で単一の文書に変換できることを知っていますが、クエリが書かれた方法から、それを事前に書式設定することは可能ですか?