- Reference >
- Operators >
- Query and Projection Operators >
- Element Query Operators >
- $exists
$exists¶
On this page
Definition¶
-
$exists¶ Syntax:
{ field: { $exists: <boolean> } }When
<boolean>is true,$existsmatches the documents that contain the field, including documents where the field value isnull. If<boolean>is false, the query returns only the documents that do not contain the field. [1]MongoDB $exists does not correspond to SQL operator
exists. For SQLexists, refer to the$inoperator.
See also
| [1] | Starting in MongoDB 4.2, users can no longer use the query filter
$type: 0 as a synonym for
$exists:false. To query for null or missing fields, see
Query for Null or Missing Fields. |
Examples¶
Exists and Not Equal To¶
Consider the following example:
This query will select all documents in the inventory collection
where the qty field exists and its value does not equal 5 or
15.
Null Values¶
The following examples uses a collection named records with the
following documents:
$exists: true¶
The following query specifies the query predicate a: { $exists: true }:
The results consist of those documents that contain the field a,
including the document whose field a contains a null value:
$exists: false¶
The following query specifies the query predicate b: { $exists: false }:
The results consist of those documents that do not contain the field
b:
Starting in MongoDB 4.2, users can no longer use the query filter
$type: 0 as a synonym for
$exists:false. To query for null or missing fields, see
Query for Null or Missing Fields.
Use a Sparse Index to Improve $exists Performance¶
The following scenario is not optimal because all of the collection’s documents are examined:
- You use a query to retrieve or count documents, and
- use
field: { $exists: true }, and - the
fieldhas a non-sparse index or does not have an index.
To improve performance, create a sparse index
on the field as shown in the following scenario:
Create a
stockSalescollection:The document with an
_idof:3has a nullauditDatevalue.5is missing theauditDatevalue.
Create a sparse index on the
auditDatefield:The following example counts the documents where the
auditDatefield has a value (including null) and uses the sparse index:The example returns 5. The document that is missing the
auditDatevalue is not counted.
Tip
If you only need documents where the field has a non-null value,
you:
- Can use
$ne: nullinstead of$exists: true. - Do not need a sparse index on the
field.
For example, using the stockSales collection:
The example returns 4. Documents that are missing the auditDate
value or have a null auditDate value are not counted.
See also