MongoDB 中的自定义排序
Custom sorting in MongoDB
我正在创建一个 NodeJS 应用程序,我想按姓氏对联系人进行排序。问题是名称部分必须保存为一个字符串,当我在 MongoDB 中使用排序功能时,默认值是升序或降序。是否可以创建自定义排序?例如,如果信息是
[
{
_id: "565c9f1ad5015e516ea99b91",
name: "David Li"
},
{
_id: "56642c73b35adedf4fad6c30",
name: "George Chan"
}
]
如何按姓氏排序?
目前我是这样排序的:
var options = {
sort: "name"
};
collection.find({}, options, function(err, cursor) {
res.json(cursor);
});
使用您现在拥有的数据结构,您无法做到这一点。你应该做的是,除了全名字段之外,将名字和姓氏作为单独的字段:
[
{
_id: "565c9f1ad5015e516ea99b91",
fullName: "David Li",
firstName: "David",
lastName: "Li"
},
{
_id: "56642c73b35adedf4fad6c30",
fullName: "George Chan",
firstName: "George",
lastName: "Chan"
}
]
然后您可以轻松地按 lastName
:
排序
collection.find({}, { sort: "lastName" }, function(err, cursor) {
res.json(cursor);
});
我正在创建一个 NodeJS 应用程序,我想按姓氏对联系人进行排序。问题是名称部分必须保存为一个字符串,当我在 MongoDB 中使用排序功能时,默认值是升序或降序。是否可以创建自定义排序?例如,如果信息是
[
{
_id: "565c9f1ad5015e516ea99b91",
name: "David Li"
},
{
_id: "56642c73b35adedf4fad6c30",
name: "George Chan"
}
]
如何按姓氏排序?
目前我是这样排序的:
var options = {
sort: "name"
};
collection.find({}, options, function(err, cursor) {
res.json(cursor);
});
使用您现在拥有的数据结构,您无法做到这一点。你应该做的是,除了全名字段之外,将名字和姓氏作为单独的字段:
[
{
_id: "565c9f1ad5015e516ea99b91",
fullName: "David Li",
firstName: "David",
lastName: "Li"
},
{
_id: "56642c73b35adedf4fad6c30",
fullName: "George Chan",
firstName: "George",
lastName: "Chan"
}
]
然后您可以轻松地按 lastName
:
collection.find({}, { sort: "lastName" }, function(err, cursor) {
res.json(cursor);
});