MongoDB配列タイプクエリー:$elemMatchオペレータ
説明
$elemMatch配列クエリー操作は、配列値の少なくとも1つがすべてのクエリー条件に完全に一致するドキュメントをクエリーするために使用されます.構文の形式は次のとおりです.
クエリ条件が1つしかない場合は$elemMatchを使用する必要はありません.
制限$whereクエリー条件を$elemMatch内に指定できません. $textクエリー条件を$elemMatch内に指定できません.
≪インスタンス|Instance|emdw≫
次のテストデータがあります.
次の文は、results配列に80以上85未満の値を含むドキュメントを一致させるために使用されます.
次のクエリの結果、ドキュメント内のresultsの82は80以上85未満を満たします.
配列ネストされたドキュメント
たとえば、次のテストデータがあります.
次の文はresults配列にproductが「xyz」でscoreが8以上の値を含むドキュメントを一致させるために使用されます.
クエリの結果は次のとおりです.
単一クエリー条件
$elemMatchオペレータを使用する必要はありません.たとえば、次のクエリがあります.
$elemMatchオペレータは単一のクエリー条件のみで、次のような書き方で完全に使用できます.
公式サイトhttps://docs.mongodb.com/manu...
学習園
個人ブログ:https://xuexiyuan.cn/article/detail/227.html
$elemMatch配列クエリー操作は、配列値の少なくとも1つがすべてのクエリー条件に完全に一致するドキュメントをクエリーするために使用されます.構文の形式は次のとおりです.
{ : { $elemMatch: { , , ... } } }
クエリ条件が1つしかない場合は$elemMatchを使用する必要はありません.
制限
≪インスタンス|Instance|emdw≫
次のテストデータがあります.
{ _id: 1, results: [ 82, 85, 88 ] }
{ _id: 2, results: [ 75, 88, 89 ] }
次の文は、results配列に80以上85未満の値を含むドキュメントを一致させるために使用されます.
db.scores.find(
{ results: { $elemMatch: { $gte: 80, $lt: 85 } } }
)
次のクエリの結果、ドキュメント内のresultsの82は80以上85未満を満たします.
{ "_id" : 1, "results" : [ 82, 85, 88 ] }
配列ネストされたドキュメント
たとえば、次のテストデータがあります.
{ _id: 1, results: [ { product: "abc", score: 10 }, { product: "xyz", score: 5 } ] }
{ _id: 2, results: [ { product: "abc", score: 8 }, { product: "xyz", score: 7 } ] }
{ _id: 3, results: [ { product: "abc", score: 7 }, { product: "xyz", score: 8 } ] }
次の文はresults配列にproductが「xyz」でscoreが8以上の値を含むドキュメントを一致させるために使用されます.
db.survey.find(
{ results: { $elemMatch: { product: "xyz", score: { $gte: 8 } } } }
)
クエリの結果は次のとおりです.
{ _id: 3, results: [ { product: "abc", score: 7 }, { product: "xyz", score: 8 } ] }
単一クエリー条件
$elemMatchオペレータを使用する必要はありません.たとえば、次のクエリがあります.
// $elemMatch
db.survey.find(
{ results: { $elemMatch: { product: "xyz" } } }
)
$elemMatchオペレータは単一のクエリー条件のみで、次のような書き方で完全に使用できます.
db.survey.find(
{ "results.product": "xyz" }
)
公式サイトhttps://docs.mongodb.com/manu...
学習園
個人ブログ:https://xuexiyuan.cn/article/detail/227.html