MongoDB Query Operators: $and, $or, $exists, $type, $size

KAWSAR KABIR - Jun 12 - - Dev Community

When working with MongoDB, understanding various query operators is crucial for efficient data retrieval. This article will dive into the usage of some fundamental operators like $and, $or, $exists, $type, and $size.

$and Operator

Let's say we have a database named school with a students collection. We want to retrieve students whose age is not 5 and less than 10. This can be done in two ways:

db.students
  .find({ age: { $ne: 5, $lt: 10 } })
  .project({ age: 1 })
  .sort({ age: 1 });

db.students
  .find({ $and: [{ age: { $ne: 5, $lt: 10 } }] })
  .project({ age: 1 })
  .sort({ age: 1 });
Enter fullscreen mode Exit fullscreen mode

In the first example, we implicitly combine conditions within a single field. In the second, we explicitly use the $and operator. Both queries search for documents where the age is not 5 and is less than 10, then project only the age field and sort the results in ascending order.

$or Operator

The $or operator works oppositely to $and, meaning it returns documents that satisfy at least one of the conditions. While no new example is provided, it operates similarly to $and, combining conditions but returning results if any condition is true.

$exists Operator

The $exists operator checks the presence or absence of a field. For instance, to find students who do not have an age property or an email property:

db.students.find({ age: { $exists: true } });
db.students.find({ age: { $exists: false } });
Enter fullscreen mode Exit fullscreen mode
  • $exists: true returns documents with the age field present.
  • $exists: false returns documents without the age field.

Note that $exists only checks for the presence of the field, not its value.

$type Operator

The $type operator allows us to query documents based on the data type of a field's value. For example, to find students where the age field is stored as a string:

db.students.find({ age: { $type: "string" } });
Enter fullscreen mode Exit fullscreen mode

$size Operator

The $size operator is used to query arrays by their size. For example, to find documents where the friends array is empty:

db.test.find({ friends: { $size: 0 } });
Enter fullscreen mode Exit fullscreen mode

Note: The $size operator only works with array fields.

Conclusion

These operators—$and, $or, $exists, $type, and $size—are essential tools for querying MongoDB collections. Understanding their usage can significantly enhance your ability to retrieve and manipulate data efficiently. Whether you're filtering documents based on multiple conditions, checking for the presence of fields, or querying specific data types and array sizes, these operators provide powerful capabilities for precise data management.

. . . . . . . . . .