Bird
Raised Fist0
MongoDBquery~5 mins

$ne for not equal in MongoDB

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

We use $ne to find items that do NOT match a certain value. It helps us exclude things we don't want.

Finding all users except those from a specific city.
Getting products that are not in a certain category.
Listing orders that are not completed.
Showing employees who are not in a particular department.
Syntax
MongoDB
{ field: { $ne: value } }

This means: find documents where field is NOT equal to value.

You can use $ne with any data type like numbers, strings, or dates.

Examples
Finds documents where the age is NOT 30.
MongoDB
{ age: { $ne: 30 } }
Finds documents where status is NOT "completed".
MongoDB
{ status: { $ne: "completed" } }
Finds documents where category is NOT "electronics".
MongoDB
{ category: { $ne: "electronics" } }
Sample Program

This query finds all orders where the status is NOT "shipped".

MongoDB
db.orders.find({ status: { $ne: "shipped" } })
OutputSuccess
Important Notes

If the field does not exist in a document, that document will be included because it is considered not equal to the value.

You can combine $ne with other conditions for more complex queries.

Summary

$ne helps find documents where a field is NOT equal to a value.

It works with many data types like numbers and strings.

Useful to exclude unwanted data in your search.

Practice

(1/5)
1.

What does the $ne operator do in MongoDB queries?

easy
A. Finds documents where a field is NOT equal to a specified value
B. Finds documents where a field is equal to a specified value
C. Finds documents where a field is greater than a specified value
D. Finds documents where a field is less than a specified value

Solution

  1. Step 1: Understand the purpose of $ne

    The $ne operator is used to filter documents where a field's value is not equal to the given value.
  2. Step 2: Compare with other operators

    Other operators like $eq check for equality, but $ne specifically excludes matching values.
  3. Final Answer:

    Finds documents where a field is NOT equal to a specified value -> Option A
  4. Quick Check:

    $ne = Not Equal [OK]
Hint: Remember: $ne means 'not equal' in queries [OK]
Common Mistakes:
  • Confusing $ne with $eq
  • Thinking $ne checks for greater or less than
  • Using $ne without a value
2.

Which of the following is the correct syntax to find documents where the field status is NOT equal to "active"?

{ status: { ? } }
easy
A. { $not: "active" }
B. { $eq: "active" }
C. { $ne: "active" }
D. { $neq: "active" }

Solution

  1. Step 1: Recall correct operator syntax

    The $ne operator is used with the syntax: { field: { $ne: value } } to find documents where the field is not equal to the value.
  2. Step 2: Check other options for correctness

    $eq checks equality, $not is used differently, and $neq is not a valid MongoDB operator.
  3. Final Answer:

    { $ne: "active" } -> Option C
  4. Quick Check:

    Correct syntax uses $ne [OK]
Hint: Use { field: { $ne: value } } for not equal queries [OK]
Common Mistakes:
  • Using $neq instead of $ne
  • Confusing $not with $ne
  • Missing curly braces around $ne
3.

Given the collection users with documents:

[{ "name": "Alice", "age": 25 }, { "name": "Bob", "age": 30 }, { "name": "Carol", "age": 25 }]

What will be the result of the query db.users.find({ age: { $ne: 25 } })?

medium
A. [{ "name": "Bob", "age": 30 }]
B. [{ "name": "Alice", "age": 25 }, { "name": "Carol", "age": 25 }]
C. [] (empty array)
D. All documents in the collection

Solution

  1. Step 1: Understand the query condition

    The query { age: { $ne: 25 } } finds documents where the age is NOT equal to 25.
  2. Step 2: Check each document's age

    Alice and Carol have age 25, so they are excluded. Bob has age 30, so he matches.
  3. Final Answer:

    [{ "name": "Bob", "age": 30 }] -> Option A
  4. Quick Check:

    Only age != 25 returns Bob [OK]
Hint: Exclude matching values with $ne to get others [OK]
Common Mistakes:
  • Including documents with age 25
  • Returning all documents by mistake
  • Confusing $ne with $eq
4.

Identify the error in this MongoDB query to find documents where category is NOT equal to "books":

db.collection.find({ category: { $ne: books } })
medium
A. The query is correct as is
B. Incorrect operator, should use $neq instead of $ne
C. The field name should be in quotes
D. Missing quotes around the string value "books"

Solution

  1. Step 1: Check the value type in the query

    The value "books" is a string and must be enclosed in quotes in MongoDB queries.
  2. Step 2: Verify operator and field name

    The operator $ne is correct, and field names do not require quotes unless special characters are present.
  3. Final Answer:

    Missing quotes around the string value "books" -> Option D
  4. Quick Check:

    String values need quotes [OK]
Hint: Always quote string values in queries [OK]
Common Mistakes:
  • Leaving string values unquoted
  • Using $neq instead of $ne
  • Quoting field names unnecessarily
5.

You have a collection products with documents containing type and price. You want to find all products that are NOT of type "electronics" and have a price NOT equal to 100. Which query correctly uses $ne to achieve this?

hard
A. { $ne: { type: "electronics", price: 100 } }
B. { type: { $ne: "electronics" }, price: { $ne: 100 } }
C. { type: { $ne: "electronics" } || price: { $ne: 100 } }
D. { type: { $not: "electronics" }, price: { $not: 100 } }

Solution

  1. Step 1: Use $ne on each field separately

    To find documents where type is not "electronics" and price is not 100, apply $ne to each field individually.
  2. Step 2: Check query syntax correctness

    { type: { $ne: "electronics" }, price: { $ne: 100 } } correctly uses { type: { $ne: "electronics" }, price: { $ne: 100 } }. { $ne: { type: "electronics", price: 100 } } misuses $ne on an object, { type: { $ne: "electronics" } || price: { $ne: 100 } } uses invalid syntax with ||, and { type: { $not: "electronics" }, price: { $not: 100 } } uses $not incorrectly.
  3. Final Answer:

    { type: { $ne: "electronics" }, price: { $ne: 100 } } -> Option B
  4. Quick Check:

    Apply $ne to each field separately [OK]
Hint: Use $ne on each field inside the query object [OK]
Common Mistakes:
  • Using $ne on an object instead of fields
  • Using logical OR (||) inside query object incorrectly
  • Confusing $not with $ne