Выборочная сортировка в 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);
});

1 ответ

Решение

С той структурой данных, которая у вас есть сейчас, вы не сможете этого сделать. Что вы должны сделать, в дополнение к полному имени, иметь имя и фамилию в виде отдельных полей:

[
    {
        _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);
});
Другие вопросы по тегам