【MongoDB】フィールドの値が配列のドキュメントから特定の名前リストを取得するクエリ
フィールドの値が配列であり、その中に指定した複数の要素がすべて含まれているドキュメントから、特定の名前リストを取得したい場合には、$all 演算子を使用します。
$all 演算子は、「フィールドの値が配列で、指定されたすべての要素を含んでいる」ドキュメントだけを選択します。
1. サンプルコレクションの作成
まず、ドキュメントを含むコレクションを作成しましょう。
> db.demo642.insertOne(
... {
... _id:1,
... ListOfNames:["Robert","John"]
... }
... );
{ "acknowledged" : true, "insertedId" : 1 }
> db.demo642.insertOne( { _id:2, ListOfNames:["Robert","Chris"] } );
{ "acknowledged" : true, "insertedId" : 2 }2. find()メソッドですべてのドキュメントを表示
find() メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。
> db.demo642.find();
実行すると、次のような出力が得られます。
{ "_id" : 1, "ListOfNames" : [ "Robert", "John" ] }
{ "_id" : 2, "ListOfNames" : [ "Robert", "Chris" ] }3. $all演算子を使って特定の名前リストを取得する
次のクエリでは、「Chris」と「Robert」の両方を含む配列を持つドキュメントのみを取得しています。
> db.demo642.find({ListOfNames: {
... $all: [ "Chris", "Robert" ]
... }})このクエリを実行すると、以下の出力が得られます。
{ "_id" : 2, "ListOfNames" : [ "Robert", "Chris" ] }このように、$all 演算子を使うことで、配列フィールド内に指定した要素がすべて存在するドキュメントのみを効率的に抽出できます。なお、要素の順序は問われず、配列内のどこに含まれていても一致とみなされます。
-
MongoDBで特定フィールドの配列要素数を取得する方法($size演算子の使い方)
MongoDBでドキュメント内の特定フィールド(配列)に含まれる要素の数をカウントしたい場合は、集計パイプライン(aggregate)と$size演算子を組み合わせるのが最も簡単な方法です。この記事では、実際のコレクションを作成しながら、配列要素数を取得する具体的な手順を解説します。1. サンプルコレクションの作成まず、配列型のフィールド「Subject」を持つドキュメントを含むコレクションを作成します。> db.demo723.insertOne({Subject:[MySQL,MongoDB]}); { acknowledged : true, insertedId
-
MongoDBで配列をクエリして特定の値を取得する方法
配列から特定の値を取得するには、aggregate()メソッドと$projectステージを組み合わせて使用します。まずは、ドキュメントを含むコレクションを作成してみましょう。 > db.demo761.insertOne( ... { ... "details": [ ... { ... "