You can use the following methods to find the length of a string in MongoDB and use this string length in queries:
Method 1: Find Length of String
db.myCollection.aggregate([
{ $project: {
"name": 1,
"length": { $strLenCP: "$name" }
}}
])
Method 2: Find Documents with String Greater than Certain Length
db.myCollection.find({
"name": { $exists: true },
$expr: { $gt: [ { $strLenCP: "$name" }, 14 ] }
})
The following examples show how to use each method with a collection teams with the following documents:
db.teams.insertOne({name: "Dallas Mavs", points: 31})
db.teams.insertOne({name: "San Antonio Spurs", points: 22})
db.teams.insertOne({name: "Houston Rockets", points: 19})
db.teams.insertOne({name: "Boston Celtics", points: 26})
db.teams.insertOne({name: "Cleveland Cavs", points: 33})
Example 1: Find Length of String
We can use the following code to calculate the length of the string in the “name” field of each document:
db.teams.aggregate([
{ $project: {
"name": 1,
"length": { $strLenCP: "$name" }
}}
])
This code returns the following results:
{ _id: ObjectId("62014eff4cb04b772fd7a93d"),
name: 'Dallas Mavs',
length: 11 }
{ _id: ObjectId("62014eff4cb04b772fd7a93e"),
name: 'San Antonio Spurs',
length: 17 }
{ _id: ObjectId("62014eff4cb04b772fd7a93f"),
name: 'Houston Rockets',
length: 15 }
{ _id: ObjectId("62014eff4cb04b772fd7a940"),
name: 'Boston Celtics',
length: 14 }
{ _id: ObjectId("62014eff4cb04b772fd7a941"),
name: 'Cleveland Cavs',
length: 14 }
The length value displays the length of the string in the “name” column.
For example:
- The length of the string ‘Dallas Mavs’ is 11.
- The length of the string ‘San Antonio Spurs’ is 17.
And so on.
Note that the length also counts blank spaces.
Example 2: Find Documents with String Greater than Certain Length
We can use the following code to return only the documents where the string in the “name” column is greater than 14:
db.teams.find({
"name": { $exists: true },
$expr: { $gt: [ { $strLenCP: "$name" }, 14 ] }
})
This query returns the following results:
{ _id: ObjectId("62014eff4cb04b772fd7a93e"),
name: 'San Antonio Spurs',
points: 22 }
{ _id: ObjectId("62014eff4cb04b772fd7a93f"),
name: 'Houston Rockets',
points: 19 }
Notice the the only two teams returned are the ones where the “name” field is greater than a length of 14.
Note: You can find the complete documentation for the $strLenCP function here.
Additional Resources
The following tutorials explain how to perform other common operations in MongoDB:
MongoDB: How to Split String into Array of Substrings
MongoDB: How to Concatenate Strings from Two Fields
MongoDB: How to Replace Strings in