[解決済み] MongoDBの$unwind演算子って何?
質問
これは私がMongoDBを使う最初の日なので、気楽にやってください :)
私は理解することができません
$unwind
演算子が理解できないのですが、英語が母国語ではないからでしょうか。
db.article.aggregate(
{ $project : {
author : 1 ,
title : 1 ,
tags : 1
}},
{ $unwind : "$tags" }
);
プロジェクト演算子は、なんとなくわかるような気がします(まるで
SELECT
のようなものですね)。でも、それなら
$unwind
(は、(引用者注)
は、すべてのソースドキュメント内の巻き戻し配列の各メンバーに対して一つのドキュメントを返します。
.
これは
JOIN
? もしそうなら、どのように
$project
(の結果はどうなるのでしょうか?
_id
,
author
,
title
と
tags
フィールド) と比較することができます。
tags
の配列と比較できますか?
ノート
: MongoDB のウェブサイトから引用したものです。
tags
の配列の構造を知りません。タグ名の単純な配列だと思うのですが。
どのように解決するのですか?
まず最初に、MongoDBへようこそ!
MongoDBはデータストレージにquot;NoSQL;のアプローチを採用しているので、selectsやjoinなどの考えは捨ててください。データを保存する方法は、ドキュメントとコレクションの形式であり、ストレージの場所にデータを追加したり取得したりするための動的な手段を可能にします。
とはいえ、$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が行うことは、各要素のドキュメントを剥がし、その結果のドキュメントを返すということです。 これを古典的なアプローチで考えると、"for each item in the tags array, return a document with that item" と同じになります。
したがって、以下を実行した結果です。
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つへのあなたの進出を、幸運を祈ります。
関連
-
[解決済み】MongoDBデータベースの名前を変更する方法とは?
-
[解決済み】MongoDBシェルですべてのコレクションを一覧表示するには?
-
CentOS7に新規インストールしたMongodbの初期設定
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] pandasを使った "大量データ "ワークフロー【終了しました
-
[解決済み] コマンドラインからMongoDBデータベースを削除する方法を教えてください。
-
[解決済み] 別のフィールドの値を使って MongoDB のフィールドを更新する
-
[解決済み】mongoコンソールでObjectIdを使用してオブジェクトを検索する方法は?
-
[解決済み】MongoDBでデータのバージョニングを実装する方法
-
[解決済み】ドキュメントの配列内のオブジェクトを更新する方法(入れ子更新)について)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MongoDB - シンプルなサブクエリの例
-
[解決済み] MongoDBのデフォルトのユーザーとパスワードは何ですか?
-
[解決済み] MongoDBでコレクションを削除するには?
-
[解決済み] mongod.serviceの再起動に失敗しました。ユニット mongod.service が見つかりませんでした
-
[解決済み] mongodb aggregation sort
-
[解決済み] 配列フィールドが空でない MongoDB レコードを検索する
-
[解決済み] 複数のキーで "distinct "を効率的に実行するには?
-
[解決済み] MongoDBでフィールドが存在することを確認する
-
MongoDBラーニングノート
-
[解決済み】ネストされたオブジェクトをクエリする方法は?