Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
Selected Reading
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.
Advertisements
