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