クエリ ドキュメント
コレクション内のドキュメントをクエリするには、MongoDB Shell の db.collection.find()
メソッドを使用します。
このページの例は、Atlas サンプル データセットを参照しています。無料の MongoDB Atlas クラスターを作成し、そのクラスターにサンプル データを入力して、以下の例に従うことができます。詳細については、「Atlas スタートガイド」を参照してください。
コレクション内のすべてのドキュメントの読み取り
コレクション内のすべてのドキュメントを読み取るには、空のドキュメントをクエリフィルター パラメーターとして find メソッドに渡します。クエリフィルター パラメーターは、選択条件を決定します。
例
sample_mflix.movies
コレクションからすべてのドキュメントを返すには以下を行います。
use sample_mflix db.movies.find()
この操作は、次の SQL 文と同等です。
SELECT * FROM movies
等価条件を指定
等価条件に一致するドキュメントを選択するには、クエリフィルター ドキュメントで条件を<field>:<value>
ペアとして指定します。
例
sample_mflix.movies
コレクションからtitle
がTitanic
に等しいすべてのムービーを返すには以下を行います。
use sample_mflix db.movies.find( { "title": "Titanic" } )
この操作は、次の SQL ステートメントに対応しています。
SELECT * FROM movies WHERE title = "Titanic"
クエリ演算子を使用して条件を指定
クエリ演算子を クエリフィルター ドキュメントで使用し、より複雑な比較と評価を実行します。クエリフィルター ドキュメント内のクエリ演算子の形式は次のとおりです。
{ <field1>: { <operator1>: <value1> }, ... }
例
評価がPG
またはPG-13
であるすべての映画をsample_mflix.movies
コレクションから返すには以下を行います。
use sample_mflix db.movies.find( { rated: { $in: [ "PG", "PG-13" ] } } )
この操作は、次の SQL ステートメントに対応しています。
SELECT * FROM movies WHERE rated in ("PG", "PG-13")
論理演算子の指定 (AND
/ OR
)
複合クエリは、コレクション内のドキュメントの複数のフィールドに条件を指定することができます。暗黙的に、論理的な AND
結合が複合クエリの各条件句を接続し、すべての条件に一致するドキュメントがコレクションから選択されます。
例
メキシコで公開されさらにIMDBの評価が7以上の映画を返すには以下を行います。
use sample_mflix db.movies.find( { countries: "Mexico", "imdb.rating": { $gte: 7 } } )
$or
演算子を使用して、各句を論理OR
結合で結合する複合クエリを指定します。これにより、クエリはコレクション内で少なくとも 1 つの条件に一致するドキュメントを選択します。
例
sample_mflix.movies
コレクションから、2010 年に公開され、さらに少なくとも 5 つの賞を受賞したか、または、 genre
がDrama
である映画を返すには以下を行います。
use sample_mflix db.movies.find( { year: 2010, $or: [ { "awards.wins": { $gte: 5 } }, { genres: "Drama" } ] } )
読み取り動作
ドキュメントの読み取りの特定の動作の詳細については、 「動作」を参照してください。
その他のクエリに関するチュートリアル
その他のクエリの例については、以下を参照してください。