Issues with $gte and $lte for string comparision

Most likely because any name other than the letter C itself is considered greater than C. See

> db.C.insert( { "_id" : "C" } )
WriteResult({ "nInserted" : 1 })
> db.C.insert( { "_id" : "Ci" } )
WriteResult({ "nInserted" : 1 })
> db.C.insert( { "_id" : "D" } )
WriteResult({ "nInserted" : 1 })
> db.C.find().sort( { "_id" : 1 } )
{ "_id" : "C" }
{ "_id" : "Ci" }
{ "_id" : "D" }

So you should try with

{"Last_Name":{$gte:"C"}}
{"Last_Name":{$lt:"D"}}

And thinking about if

it then confirm what I wrote above any name other than the letter C itself is considered greater than C.