Query Your Data
On this page
- Compatibility
- Set Query Filter
- Examples
- Match by a Single Condition
- Match by Multiple Conditions ($and)
- Match by Multiple Possible Conditions ($or)
- Match by Exclusion ($not)
- Match with Comparison Operators
- Match by Date
- Match by Array Conditions
- Match by Substring
- Match by Embedded Field
- Supported Data Types in the Query Bar
- Clear the Query
- Query Collections with Invalid UTF8 Data
- How Does the Compass Query Compare to MongoDB and SQL Queries?
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.
Compatibility
You can query your data for deployments hosted in the following environments:
MongoDB Atlas: The fully managed service for MongoDB deployments in the cloud
MongoDB Enterprise: The subscription-based, self-managed version of MongoDB
MongoDB Community: The source available, free-to-use, and self-managed version of MongoDB
To learn more about querying your data for deployments hosted in MongoDB Atlas, see Find Specific Documents.
Set Query Filter
In the Filter field, enter a filter document between the curly braces. You can use all the MongoDB query operators except the
$text
and$expr
operators.Example
The following filter returns documents that have a
title
value ofJurassic Park
:{ "title": "Jurassic Park" } Click Find to run the query and view the updated results.
click to enlarge
Examples
The examples on this page use a small example dataset. To import the sample data into your MongoDB deployment, perform the following steps:
Copy the following documents to your clipboard:
[ { "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" } } ] In Compass, use the left navigation panel to select the database and the collection you want to import the data to.
Click the Documents tab.
Click Add Data and select Insert Document.
Set the View to JSON (
{}
).Paste the JSON documents from your clipboard into the modal.
Click Insert.
Note
If you do not have a MongoDB deployment or if you want to query a larger sample data set, see Sample Data for Atlas Clusters for instructions on creating a free-tier cluster with sample data. The following example queries filter the sample documents provided on this page.
Match by a Single Condition
The following query filter finds all documents where the value of
name
is "Andrea Le":
{ name: "Andrea Le" }
The query returns the following document:
{ "_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" } }
Match by Multiple Conditions ($and)
The following query filter finds all documents where scores
array
contains the value 75
, and the name
is Greg Powell
:
{ $and: [ { scores: 75, name: "Greg Powell" } ] }
The query returns the following document:
{ "_id": { "$oid":"5a9427648b0beebeb69579cf" }, "name": "Greg Powell", "email": "greg_powell@fake-mail.com", "version": 1, "scores": [ 65, 75, 80 ], "dateCreated": { "$date": "1999-02-10" } }
Match by Multiple Possible Conditions ($or)
The following query filter uses the $or
operator to find
documents where version
is 4
, or name
is Andrea Le
:
{ $or: [ { version: 4 }, { name: "Andrea Le" } ] }
The query returns the following documents:
[ { "_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" } } ]
Match by Exclusion ($not)
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:
[ { "_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
See also:
For a complete list of logical query operators, see Logical Query Operators.
Match with Comparison 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:
[ { "_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
See also:
For a complete list of comparison operators, see Comparison Query Operators.
Match by Date
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: new Date('2000-06-22') } }
The query returns the following documents:
[ { "_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" } } ]
Match by Array Conditions
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
:
{ "_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" } }
For more query examples, see Query Documents in the MongoDB manual.
Match by Substring
The following query filter uses the $regex
operator
to find all documents where the value of email
includes the term
"andrea_le":
{ email: { $regex: "andrea_le" } }
The query returns the following document:
{ "_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" } }
Match by Embedded Field
The following query filter finds the
document with the school.name
subfield of "Northwestern":
{ "school.name": "Northwestern" }
The query returns the following document:
{ "_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" } }
For more query examples, see Query Documents in the MongoDB manual.
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.
Query Collections with Invalid UTF8 Data
If you attempt to query or export data with invalid UTF8 characters the following error message displays:
Invalid UTF-8 string in BSON document.
To query or export this data, disable UTF8 validation by setting
the enableUtf8Validation
URI option to false
.
Warning
Editing data with enableUtf8Validation=false
can result in
loss of data. This approach is a temporary workaround to
query or export data only.
The following URI disables UTF8 validation:
mongodb://localhost:27017/?enableUtf8Validation=false
Note
You can also disable this option in the
Advanced Connection Options by
selecting enableUtf8Validation and entering
false
.
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( { $match: { "author": "Joe Bloggs" } } ) - SQL
SELECT * FROM article WHERE author = "Joe Bloggs";