Introduction to MongoDB $allElementsTrue Operator

$allElementsTrue is a logical operator in MongoDB used to test whether all elements in an array field are true.

Syntax

The syntax of the $allElementsTrue operator is as follows:

{ $allElementsTrue: <expression> }

Where <expression> specifies the array field to test.

Use Cases

The $allElementsTrue operator is typically used to query arrays containing multiple boolean values. For example, suppose there is a document storing user preferences that includes an array field named languages indicating the languages the user can speak. It might look like this:

{
  "_id": ObjectId("602e3c743d19847d1c43f947"),
  "name": "Alice",
  "languages": [true, false, true, true]
}

Here, the languages array has four elements, indicating that Alice speaks three languages but not the second one. To find users who can speak all languages, the $allElementsTrue operator can be used.

Examples

Here is an example using the $allElementsTrue operator. Suppose there are the following documents:

{
  "_id": ObjectId("602e3c743d19847d1c43f947"),
  "name": "Alice",
  "languages": [true, false, true, true]
},
{
  "_id": ObjectId("602e3c743d19847d1c43f948"),
  "name": "Bob",
  "languages": [true, true, true, true]
},
{
  "_id": ObjectId("602e3c743d19847d1c43f949"),
  "name": "Charlie",
  "languages": [true, true, true, false]
}

The following query can be used to find users who can speak all languages:

db.users.find({ languages: { $allElementsTrue: true } })

Executing this query will return the following result:

{ "_id": ObjectId("602e3c743d19847d1c43f948"), "name": "Bob", "languages": [true, true, true, true] }

This is because only Bob can speak all languages.

Conclusion

The $allElementsTrue operator is a useful logical operator for testing whether all elements in an array field are true. Using it can make it convenient to query arrays containing multiple boolean values, and to find documents that match certain criteria.