Select MongoDB documents where a field either does not exist, is null, or is false?

To select MongoDB documents where a field either does not exist, is null, or is false, use the $in operator with an array containing false and null values. MongoDB treats non-existing fields as null when querying.

Syntax

db.collection.find({
    "fieldName": { $in: [false, null] }
});

Sample Data

db.selectMongoDBDocumentsWithSomeCondition.insertMany([
    {"StudentId": 1, "StudentName": "Larry"},
    {"StudentId": 2, "StudentName": "Mike", "hasAgeGreaterThanOrEqualTo18": true},
    {"StudentId": 3, "StudentName": "Carol", "hasAgeGreaterThanOrEqualTo18": false},
    {"StudentId": 4, "StudentName": "Sam", "hasAgeGreaterThanOrEqualTo18": null},
    {"StudentId": 5, "StudentName": "David", "hasAgeGreaterThanOrEqualTo18": false},
    {"StudentId": 6, "StudentName": "Chris", "hasAgeGreaterThanOrEqualTo18": null},
    {"StudentId": 7, "StudentName": "Robert", "hasAgeGreaterThanOrEqualTo18": true}
]);
{
    "acknowledged": true,
    "insertedIds": [
        ObjectId("..."),
        ObjectId("..."),
        ObjectId("...")
    ]
}

Display All Documents

db.selectMongoDBDocumentsWithSomeCondition.find().pretty();
{
    "_id": ObjectId("5c9010215705caea966c557f"),
    "StudentId": 1,
    "StudentName": "Larry"
}
{
    "_id": ObjectId("5c90106a5705caea966c5580"),
    "StudentId": 2,
    "StudentName": "Mike",
    "hasAgeGreaterThanOrEqualTo18": true
}
{
    "_id": ObjectId("5c9010795705caea966c5581"),
    "StudentId": 3,
    "StudentName": "Carol",
    "hasAgeGreaterThanOrEqualTo18": false
}
{
    "_id": ObjectId("5c9010865705caea966c5582"),
    "StudentId": 4,
    "StudentName": "Sam",
    "hasAgeGreaterThanOrEqualTo18": null
}
{
    "_id": ObjectId("5c9010945705caea966c5583"),
    "StudentId": 5,
    "StudentName": "David",
    "hasAgeGreaterThanOrEqualTo18": false
}
{
    "_id": ObjectId("5c9010a45705caea966c5584"),
    "StudentId": 6,
    "StudentName": "Chris",
    "hasAgeGreaterThanOrEqualTo18": null
}
{
    "_id": ObjectId("5c9010b05705caea966c5585"),
    "StudentId": 7,
    "StudentName": "Robert",
    "hasAgeGreaterThanOrEqualTo18": true
}

Query for Non-existing, Null, or False Fields

db.selectMongoDBDocumentsWithSomeCondition.find({
    "hasAgeGreaterThanOrEqualTo18": { $in: [false, null] }
}).pretty();
{
    "_id": ObjectId("5c9010215705caea966c557f"),
    "StudentId": 1,
    "StudentName": "Larry"
}
{
    "_id": ObjectId("5c9010795705caea966c5581"),
    "StudentId": 3,
    "StudentName": "Carol",
    "hasAgeGreaterThanOrEqualTo18": false
}
{
    "_id": ObjectId("5c9010865705caea966c5582"),
    "StudentId": 4,
    "StudentName": "Sam",
    "hasAgeGreaterThanOrEqualTo18": null
}
{
    "_id": ObjectId("5c9010945705caea966c5583"),
    "StudentId": 5,
    "StudentName": "David",
    "hasAgeGreaterThanOrEqualTo18": false
}
{
    "_id": ObjectId("5c9010a45705caea966c5584"),
    "StudentId": 6,
    "StudentName": "Chris",
    "hasAgeGreaterThanOrEqualTo18": null
}

How It Works

The $in operator matches documents where the field value equals any value in the specified array. When a field doesn't exist, MongoDB treats it as null, so including null in the array captures both non-existing and explicitly null fields.

Conclusion

Use $in: [false, null] to select documents where a field is false, null, or doesn't exist. MongoDB automatically treats missing fields as null, making this approach comprehensive for all three conditions.

Updated on: 2026-03-15T00:16:42+05:30

462 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements