在mongodb作为数据库的nodejs(express)中的一个项目中,我的工作非常努力。当我使用sort()获取所有数据时,它以错误的方式返回数据,因此有办法按我期望的那样正确地设置其格式,如下所示: 如果我们在数据库中有三个记录:
---------------------
id | Name | aga
---------------------
1 | atul | 21
---------------------
2 | Bhavik | 22
---------------------
3 | Jay | 25
我现在得到的是:
2,3,1系列数据
我期望的是: 1,2,3
这意味着忽略大小写,而无需添加新列即可进行排序。
答案 0 :(得分:6)
您需要在此处将locale: "en"
与db.collection.find({}).collation({ locale: "en" }).sort({ name: 1 })
一起使用
{ "_id" : 1, "name" : "Bhavik" }
{ "_id" : 2, "name" : "Jay" }
{ "_id" : 3, "name" : "atul" }
对于下面的文件
{ "_id" : 3, "name" : "atul" }
{ "_id" : 1, "name" : "Bhavik" }
{ "_id" : 2, "name" : "Jay" }
您会得到
IQueryable<Record> records=null;
try
{
records= from m in _context.Record
select m;
}
catch (NullReferenceException e)
{
return Json(JsonConvert.SerializeObject(e.Message, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
}
catch (ArgumentNullException e)
{
return Json(JsonConvert.SerializeObject(e.Message, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
}
catch (Exception e)
{
return Json(JsonConvert.SerializeObject(e, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
}
return Json(JsonConvert.SerializeObject(records, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
答案 1 :(得分:0)
您可以直接在find
方法的collation: { locale: 'en' }
参数中传递options
:
db.collection.find({ ...query }, {
sort: ...,
limit: ...,
collation: { locale: 'en' }
}
答案 2 :(得分:0)
通过这种默认排序规则创建集合,您可以按不区分大小写的任意属性进行排序。
db.createCollection("collection_name", { collation: { locale: 'en_US', strength: 2 } } )
db.getCollection('collection_name').find({}).sort( { 'property_name': -1 } )
更多信息:https://docs.mongodb.com/manual/core/index-case-insensitive/