$strLenBytes (Byte Length)
Last updated: 2026-10-09
$strLenBytes (Byte Length)
$strLenBytes returns the UTF-8 byte length of a string — a staple for storage estimation and field-size limits. For pure ASCII, bytes equal characters; Chinese takes 3 bytes per character and emoji usually 4. It accepts strings only; other types throw, so convert with $toString first. Results can differ from the code-point-based $strLenCP.
| Category | String |
|---|---|
| MongoDB Version | 1.0+ |
| Example Language | mongosh (Shell) |
📝 Syntax
{ $strLenBytes: <string-expression> }
⚙️ Parameters
| string | Required; the string expression to measure. |
|---|
Returns:The UTF-8 byte length as an integer.
▶ Example
Run the commands below in your local mongosh (requires a running mongod):
// $strLenBytes: byte size of article titles
db.articles.aggregate([
{ $project: { sizeBytes: { $strLenBytes: '$title' } } }
])
Output:
{ "_id": 1, "sizeBytes": 42 }
{ "_id": 2, "sizeBytes": 36 }
📌 Notes
- A Chinese character is 3 bytes — not the character count
- Non-string input throws — convert with $toString
- Results differ from $strLenCP when multi-byte characters exist
🏷️ Related Tags
💡 Related Cases
More hands-on cases coming soon.
📚 Related Tutorials
❓ FAQ
QHow many bytes is a Chinese character?
A3 bytes under UTF-8.
QWhen does it differ from $strLenCP?
AWith Chinese or emoji they differ; pure ASCII matches.
QCan it enforce field-size limits?
AYes — combine with $match to filter over-limit records.