Docs Menu
Docs Home
/
MongoDB Compass
/

データのクエリ

項目一覧

  • 互換性
  • クエリフィルターの設定
  • 1 つの条件による一致
  • 複数条件による一致($and)
  • 複数の可能な条件による一致($or)
  • 除外による一致($not)
  • 比較演算子による一致
  • 日付による一致
  • 配列条件による一致
  • Substring による一致
  • 埋め込みフィールドによる一致
  • クエリ バーでサポートされているデータ型
  • クエリをクリア
  • 無効な UTF8 データを含むクエリ コレクション
  • Compass クエリと MongoDB クエリおよび SQL クエリの比較

クエリ バーに MongoDB フィルター ドキュメントを入力して、指定した条件に一致するドキュメントのみを表示できます。ドキュメントのクエリについて詳しくは、MongoDB マニュアルのドキュメントのクエリ」を参照してください。

次の環境でホストされている配置のデータをクエリできます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが公開され、無料で使用できる、自己管理型の MongoDB バージョン

MongoDB Atlas でホストされている配置のデータのクエリについて詳しくは、「特定のドキュメントの検索」を参照してください。

  1. Filter フィールドに中括弧で囲まれたフィルタードキュメントを入力します。$text 演算子と $expr 演算子を除くすべての MongoDB クエリ演算子を使用できます。

    次のフィルターは、title の値が Jurassic Park であるドキュメントを返します。

    { "title": "Jurassic Park" }
  2. [Find] をクリックしてクエリを実行し、更新された結果を表示します。

    クエリフィルターの適用結果
    クリックして拡大します

このページでは、小さなデータセットの例を使用しています。サンプル データを MongoDB 配置にインポートするには、次の手順を実行します。

  1. 以下のドキュメントをクリップボードにコピーします。

    [
    {
    "name": "Andrea Le",
    "email": "andrea_le@fake-mail.com",
    "school": {
    "name": "Northwestern"
    },
    "version": 5,
    "scores": [ 85, 95, 75 ],
    "dateCreated": { "$date": "2003-03-26" }
    },
    {
    "email": "no_name@fake-mail.com",
    "version": 4,
    "scores": [ 90, 90, 70 ],
    "dateCreated": { "$date": "2001-04-15" }
    },
    {
    "name": "Greg Powell",
    "email": "greg_powell@fake-mail.com",
    "version": 1,
    "scores": [ 65, 75, 80 ],
    "dateCreated": { "$date": "1999-02-10" }
    }
    ]
  2. Compass では、左側のナビゲーション パネルを使用して、データをインポートするデータベースとコレクションを選択します。

  3. [Documents] タブをクリックします。

  4. [Add Data] をクリックし、[Insert Document] を選択します。

  5. View を JSON({})に設定します。

  6. クリップボードから JSON ドキュメントをモーダルに貼り付けます。

  7. [Insert] をクリックします。

注意

MongoDB を配置していない場合、またはより大きなサンプル データセットをクエリする場合は、サンプル データを使用して無料ティアクラスターを作成する手順について、「Atlas クラスターのサンプル データ」を参照してください。次のクエリの例では、このページで提供されているサンプル ドキュメントをフィルタリングしています。

次のクエリフィルターは、name の値が "Andrea Le" であるすべてのドキュメントを検索します。

{ name: "Andrea Le" }

このクエリは、次のドキュメントを返します。

{
"_id": { "$oid": "5e349915cebae490877d561d" },
"name": "Andrea Le",
"email": "andrea_le@fake-mail.com",
"school": {
"name": "Northwestern"
},
"version": 5,
"scores": [ 85, 95, 75 ],
"dateCreated": { "$date": "2003-03-26" }
}

次のクエリフィルターは、scores 配列に値 75 が含まれ、nameGreg Powell であるすべてのドキュメントを検索します。

{ $and: [ { scores: 75, name: "Greg Powell" } ] }

このクエリは、次のドキュメントを返します。

{
"_id": { "$oid":"5a9427648b0beebeb69579cf" },
"name": "Greg Powell",
"email": "greg_powell@fake-mail.com",
"version": 1,
"scores": [ 65, 75, 80 ],
"dateCreated": { "$date": "1999-02-10" }
}

次のクエリフィルターでは、$or 演算子を使用して、version4、または nameAndrea Le のドキュメントを検索します。

{ $or: [ { version: 4 }, { name: "Andrea Le" } ] }

このクエリでは次のドキュメントが返されます。

[
{
"_id": { "$oid": "5e349915cebae490877d561d" },
"name": "Andrea Le",
"email": "andrea_le@fake-mail.com",
"school": {
"name": "Northwestern"
},
"version": 5,
"scores": [ 85, 95, 75 ],
"dateCreated": { "$date": "2003-03-26" }
},
{
"_id": { "$oid":"5e349915cebae490877d561e" },
"email": "no_name@fake-mail.com",
"version": 4,
"scores": [ 90, 90, 70 ],
"dateCreated": { "$date": "2001-04-15" }
}
]

次のクエリフィルターでは、$not 演算子を使用して、name フィールドの値が "Andrea Le" と等しくない、またはname フィールドが存在しないすべてのドキュメントを検索します。

{ name: { $not: { $eq: "Andrea Le" } } }

このクエリでは次のドキュメントが返されます。

[
{
"_id": { "$oid":"5e349915cebae490877d561e" },
"email": "no_name@fake-mail.com",
"version": 4,
"scores": [ 90, 90, 70 ],
"dateCreated": { "$date": "2001-04-15" }
},
{
"_id": { "$oid":"5a9427648b0beebeb69579cf" },
"name": "Greg Powell",
"email": "greg_powell@fake-mail.com",
"version": 1,
"scores": [ 65, 75, 80 ],
"dateCreated": { "$date": "1999-02-10" }
}
]

Tip

以下も参照してください。

論理クエリ演算子の全リストについては、「論理クエリ演算子」を参照してください。

次のクエリフィルターでは、$lte 演算子を使用して、version4 以下であるすべてのドキュメントを検索します。

{ version: { $lte: 4 } }

このクエリでは次のドキュメントが返されます。

[
{
"_id": { "$oid":"5e349915cebae490877d561e" },
"email": "no_name@fake-mail.com",
"version": 4,
"scores": [ 90, 90, 70 ],
"dateCreated": { "$date": "2001-04-15" }
},
{
"_id": { "$oid":"5a9427648b0beebeb69579cf" },
"name": "Greg Powell",
"email": "greg_powell@fake-mail.com",
"version": 1,
"scores": [ 65, 75, 80 ],
"dateCreated": { "$date": "1999-02-10" }
}
]

Tip

以下も参照してください。

比較演算子の全リストについては、「比較クエリ演算子」を参照してください。

次のクエリフィルターでは、$gt 演算子と Date() メソッドを使用して、dateCreated フィールドの値が 2000 年 6 月 22 日以降であるすべてのドキュメントを検索します。

{ dateCreated: { $gt: new Date('2000-06-22') } }

このクエリでは次のドキュメントが返されます。

[
{
"_id": { "$oid": "5e349915cebae490877d561d" },
"name": "Andrea Le",
"email": "andrea_le@fake-mail.com",
"school": {
"name": "Northwestern"
},
"version": 5,
"scores": [ 85, 95, 75 ],
"dateCreated": { "$date": "2003-03-26" }
},
{
"_id": { "$oid": "5e349915cebae490877d561e" },
"email": "no_name@fake-mail.com",
"version": 4,
"scores": [ 90, 90, 70 ],
"dateCreated": { "$date": "2001-04-15" }
}
]

次のクエリフィルターでは、$elemMatch 演算子を使用して、scores 配列内の少なくとも 1 つの値が 80 より大きく、90 より小さいすべてのドキュメントを検索します。

{ scores: { $elemMatch: { $gt: 80, $lt: 90 } } }

scores 配列の値の 1 つが 85 であるため、クエリは次のドキュメントを返します。

{
"_id": { "$oid": "5e349915cebae490877d561d" },
"name": "Andrea Le",
"email": "andrea_le@fake-mail.com",
"school": {
"name": "Northwestern"
},
"version": 5,
"scores": [ 85, 95, 75 ],
"dateCreated": { "$date": "2003-03-26" }
}

その他のクエリの例については、MongoDB マニュアルの「クエリ ドキュメント」を参照してください。

次のクエリフィルターでは、$regex 演算子を使用して、email の値に "andrea_le" という用語が含まれるすべてのドキュメントを検索します。

{ email: { $regex: "andrea_le" } }

このクエリは、次のドキュメントを返します。

{
"_id": { "$oid": "5e349915cebae490877d561d" },
"name": "Andrea Le",
"email": "andrea_le@fake-mail.com",
"school": {
"name": "Northwestern"
},
"version": 5,
"scores": [ 85, 95, 75 ],
"dateCreated": { "$date": "2003-03-26" }
}

次のクエリフィルターで、school.name サブフィールドが「Northwestern」であるドキュメントが検索されます。

{ "school.name": "Northwestern" }

このクエリは、次のドキュメントを返します。

{
"_id": { "$oid": "5e349915cebae490877d561d" },
"name": "Andrea Le",
"email": "andrea_le@fake-mail.com",
"school": {
"name": "Northwestern"
},
"version": 5,
"scores": [ 85, 95, 75 ],
"dateCreated": { "$date": "2003-03-26" }
}

その他のクエリの例については、MongoDB マニュアルの「クエリ ドキュメント」を参照してください。

Compass Filter では、MongoDB 拡張 JSON BSON データ型mongo shell モード表現の使用がサポートされています。

次のフィルターは、start_date が BSON の Date 2017-05-01 より後のドキュメントを返します。

{ "start_date": {$gt: new Date('2017-05-01')} }

start_date$gt 比較演算子の両方に Date 型を指定すると、Compass ではgreater than 比較が時系列で実行され、start_date2017-05-01 より後のドキュメントを返します。

Date 型の指定がない場合、Compass は start_dates を、値を時系列で比較するのではなく、文字列として辞書編集順 に比較します。

クエリ バーとクエリの結果を消去するには、[Reset] をクリックします。

無効な UTF8 文字を含むデータをクエリまたはエクスポートしようとすると、次のエラー メッセージが表示されます。

Invalid UTF-8 string in BSON document.

このデータをクエリまたはエクスポートするには、enableUtf8Validation URI オプションを false に設定して UTF8 検証を無効にします。

警告

enableUtf8Validation=falseを使用してデータを編集すると、データが失われる可能性があります。このアプローチは、データのクエリまたはエクスポートのための一時的な回避策です。

次の URI は UTF8 検証を無効にします。

mongodb://localhost:27017/?enableUtf8Validation=false

注意

このオプションは、[高度な接続オプション] で、[enableUtf8Validation] をクリックし、falseを入力する方法でも無効にできます。

$filter は、SQLSELECT ステートメントでは WHERE 句に対応します。

3,235 件の記事があります。Joe Bloggs が書いた記事をすべて見ようとしています。

Compass フィルター オプション
{ author : { $eq : "Joe Bloggs" } }
MongoDB 集計
db.article.aggregate( { $match: { "author": "Joe Bloggs" } } )
SQL
SELECT * FROM article
WHERE author = "Joe Bloggs";

戻る

複数のドキュメントの削除