Introduction to MongoDB $bsonSize Operator
MongoDB is a non-relational database where documents are the basic unit of storage. To handle document size, MongoDB provides operators to compute the size of documents, including the $binarySize and $bsonSize operators. The $bsonSize operator is used to compute the BSON size of a document, which returns the number of bytes in the BSON document. BSON is a binary representation format and is the default storage format for documents in MongoDB. Therefore, using the $bsonSize operator makes it easy to calculate the actual size of MongoDB documents.
Syntax
The syntax of the $bsonSize operator is as follows:
{ $bsonSize: <expression> }
Here, <expression> can be any expression whose return value must be a BSON document.
Use Cases
The $bsonSize operator can be used in the following scenarios:
- To compute the actual size of a document.
- For specific documents, comparing their sizes can determine which documents are more suitable for storage in MongoDB.
Examples
Assume we have a collection products that stores product information, where each document has the following format:
{
"_id": ObjectId("61fb8e9aa20f8355a5e9207a"),
"name": "iPhone 13",
"brand": "Apple",
"price": 999,
"specs": {
"screen": "6.1 inches",
"camera": "12 MP",
"memory": "128 GB"
}
}
Now, we want to compute the BSON size of the first document. We can use the following command:
db.products.aggregate([
{
$match: { _id: ObjectId("61fb8e9aa20f8355a5e9207a") }
},
{
$project: {
bsonSize: { $bsonSize: "$$ROOT" }
}
}
])
The output of the above command is as follows:
{
"_id": ObjectId("61fb8e9aa20f8355a5e9207a"),
"bsonSize": 117
}Conclusion
The $bsonSize operator is very useful in computing the BSON size of MongoDB documents, and in determining which documents are more suitable for storage in MongoDB. However, it should be noted that the $bsonSize operator does not take into account the size of indexes and other metadata in the collection.