For this document: { "_id" : 3, "name" : " Shyam Lingam " }
Expected: while retrieving _id = 3 then result should come like below:
{ "_id" : 3, "name" : "Shyam Lingam" }
I tried this: db.collection.find({_id:3},{name:{$trim:{input:"$name"}}})
{ "_id" : 3, "name" : "Shyam Lingam" }
but still whitespace between Shyam and Lingam is there which should not come.
This query may look complex.
$trim
- Trim the value of 1.1 at the beginning and end.
1.1. $reduce
- Transform array to string.
1.1.1. input
- Split name
by space and filter the word which is not space.
1.1.2. initialValue
- Set the initial value as an empty string.
1.1.3. in
- With $concat
, combine all the elements into a string with ' ' as the delimiter.
db.collection.find({
_id: 3
},
{
name: {
$trim: {
input: {
$reduce: {
input: {
$filter: {
input: {
$split: [
"$name",
" "
]
},
cond: {
$ne: [
"$$this",
""
]
}
}
},
initialValue: "",
in: {
$concat: [
"$$value",
" ",
"$$this"
]
}
}
}
}
}
})