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);
});