Mongodb sort with case insensitive manner
I am struct very hard at one project in nodejs(express) with mongodb as database. When i get all data using sort() it returns data in wrong manner, so is there way to get it properly format as i am expecting as below: If we have three record in DB:
---------------------
id | Name | aga
---------------------
1 | atul | 21
---------------------
2 | Bhavik | 22
---------------------
3 | Jay | 25
What i am getting at present is:
2,3,1 series data
What i expect is to come is: 1,2,3
It means is to ignore the case while sorting is it possible without adding new column.
You need to use collation
here with locale: "en"
db.collection.find({}).collation({ locale: "en" }).sort({ name: 1 })
So for the below document
{ "_id" : 1, "name" : "Bhavik" }
{ "_id" : 2, "name" : "Jay" }
{ "_id" : 3, "name" : "atul" }
You will get
{ "_id" : 3, "name" : "atul" }
{ "_id" : 1, "name" : "Bhavik" }
{ "_id" : 2, "name" : "Jay" }
Create the collection with a default collation by this way you can order by any property with case insensitive.
db.createCollection("collection_name", { collation: { locale: 'en_US', strength: 2 } } )
db.getCollection('collection_name').find({}).sort( { 'property_name': -1 } )
More info: https://docs.mongodb.com/manual/core/index-case-insensitive/