Navigation

Query Your Data

You can type MongoDB filter documents into the query bar to display only documents which match the specified criteria. To learn more about querying documents, see Query Documents in the MongoDB manual.

Set Query Filter

  1. In the Filter field, enter a filter document. You can use all of the MongoDB query operators except the $text and $expr operators.

    Example

    The following filter only returns documents which have a Country value of Brazil:

    { Country: "Brazil" }
    
  2. Click Find to run the query and view the updated results.

Note

For query result sets larger than 1000 documents, Compass shows a sampling of the results. Otherwise, Compass shows the entire result set.

For details on sampling, see Sampling.

Supported Data Types in the Query Bar

The Compass Filter supports using the mongo shell mode representation of the MongoDB Extended JSON BSON data types.

Example

The following filter returns documents where start_date is greater than than the BSON Date 2017-05-01:

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

By specifying the Date type in both start_date and the $gt comparison operator, Compass performs the greater than comparison chronologically, returning documents with start_date later than 2017-05-01.

Without the Date type specification, Compass compares the start_dates as strings lexicographically, instead of comparing the values chronologically.

Clear the Query

To clear the query bar and the results of the query, click Reset.

How Does the Compass Query Compare to MongoDB and SQL Queries?

$filter corresponds to the WHERE clause in a SQL SELECT statement.

Example

You have 3,235 articles. You would like to see all articles that Joe Bloggs wrote.

Compass Filter Option
{ author : { $eq : "Joe Bloggs" } }
MongoDB Aggregation
db.article.aggregate(
  { $filter : { author : { $eq : "Joe Bloggs" } } }
);
SQL
SELECT * FROM article
WHERE author = "Joe Bloggs";

Examples

The following examples use the JSON documents below as sample data. To import this sample data to your MongoDB deployment with MongoDB Compass:

  1. Copy the array of documents below by clicking Copy.
[
   {
      "name":"Andrea Le",
      "email":"andrea_le@fakegmail.com",
      "version":5,
      "scores":[85, 95, 75],
      "dateCreated":{"$date":"2003-03-26"}
   },
   {
      "email":"no_name@fakegmail.com",
      "version":4,
      "scores":[90, 90, 70],
      "dateCreated":{"$date":"2001-04-15"}
   },
   {
      "name":"Greg Powell",
      "email":"greg_powell@fakegmail.com",
      "version":1,
      "scores":[65, 75, 80],
      "dateCreated":{"$date":"1999-02-10"}
   }
]
  1. In Compass, use the left navigation panel to select the database and the collection you want to import the data to.
  2. Click the Documents tab.
  3. Click Add Data and select Insert Document.
  4. Ensure that View is set to JSON, or {}, and paste the copied JSON documents in the field.
  5. Click Insert.

Note

If you do not have a MonogDB deployment or if you would like to query a large sample data set, see Sample Data for Atlas Clusters for instructions on creating a free-tier cluster with sample data. Note that the examples below are intended to filter the sample JSON documents provided on this page and may not properly filter another sample data set.

The following query filter finds all documents where the value of name is “Andrea Le”.

{ name: "Andrea Le" }

The query returns the following document because the name field value is an exact match.

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

The following query filter uses the $not operator to find all documents where:

  • The value of the name field is not equal to “Andrea Le”, or
  • The name field does not exist
{ name: { $not: { $eq: "Andrea Le" } } }

The query returns the following documents because the name field either does not exist or its value is something other than “Andrea Le”.

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

See also

For a complete list of logical query operators, see Logical Query Operators.

The following query filter uses the $lte operator to find all documents where version is less than or equal to 4.

{ version: { $lte: 4 } }

The query returns the following documents because the version field values are less than or equal to 4.

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

See also

For a complete list of comparison operators, see Comparison Query Operators.

The following query filter uses the $gt operator and Date() method to find all documents where the dateCreated field value is later than June 22nd, 2000.

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

The query returns the following documents because the dateCreated field values are after June 22, 2000.

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

The following query filter uses the $elemMatch operator to find all documents where at least one value in the scores array is greater than 80 and less than 90

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

The query returns the following document because one of the values in the scores array is 85, which matches the $elemMatch criteria.

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

For more query examples, see Query Documents in the MongoDB manual.