まず、MongoDB へようこそ!
覚えておくべきことは、MongoDB はデータ ストレージに "NoSQL" アプローチを採用しているため、選択、結合などの考えを忘れてしまうことです。データを保存する方法は、ドキュメントとコレクションの形式であるため、保存場所からデータを動的に追加および取得できます。
そうは言っても、$unwind パラメーターの背後にある概念を理解するには、まず、引用しようとしているユース ケースが何を言っているのかを理解する必要があります。mongodb.orgのサンプル ドキュメントは次のとおりです。
{
title : "this is my title" ,
author : "bob" ,
posted : new Date () ,
pageViews : 5 ,
tags : [ "fun" , "good" , "fun" ] ,
comments : [
{ author :"joe" , text : "this is cool" } ,
{ author :"sam" , text : "this is bad" }
],
other : { foo : 5 }
}
タグが実際には 3 つの項目の配列であることに注意してください。この場合は、"fun"、"good"、"fun" です。
$unwind が行うことは、要素ごとにドキュメントを剥がして、その結果のドキュメントを返すことです。これを従来のアプローチで考えると、「tags 配列内の各アイテムについて、そのアイテムのみを含むドキュメントを返す」ことと同等になります。
したがって、次を実行した結果は次のとおりです。
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
次のドキュメントを返します。
{
"result" : [
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "fun"
},
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "good"
},
{
"_id" : ObjectId("4e6e4ef557b77501a49233f6"),
"title" : "this is my title",
"author" : "bob",
"tags" : "fun"
}
],
"OK" : 1
}
結果配列で変更されるのは、タグ値で返されるものだけであることに注意してください。これがどのように機能するかについて追加の参照が必要な場合は、ここにリンクを含めました。これが役に立てば幸いです。これまでに出会った中で最高の NoSQL システムの 1 つに足を踏み入れてください。