2015-12-11 3 views
0

Я создаю приложение NodeJS, и я хочу отсортировать контакты по фамилии. Проблема в том, что часть имени должна быть сохранена как одна строка, и когда я использую функцию сортировки в MongoDB, значения по умолчанию возрастают или убывают. Возможно ли создать пользовательский вид? Например, если информацияПользовательская сортировка в MongoDB

[ 
    { 
     _id: "565c9f1ad5015e516ea99b91", 
     name: "David Li" 
    }, 
    { 
     _id: "56642c73b35adedf4fad6c30", 
     name: "George Chan" 
    } 
] 

как я могу сортировать ее по фамилии?

В настоящее время я сортировка, как это:

var options = { 
    sort: "name" 
}; 

collection.find({}, options, function(err, cursor) { 
    res.json(cursor); 
}); 

ответ

0

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

[ 
    { 
     _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); 
}); 
+0

Вопрос явно заявил " Проблема состоит в том, что часть имени должна быть сохранена как одна строка ». – Philipp

+0

Благодарим за предложение. Я попытаюсь добавить поле последнего имени и отсортировать его. – Geoffry

+1

@Geoffry Если вам нужно оправдать новое поле для заинтересованных сторон, вы можете утверждать, что не все культуры ставят фамилию своих фамилий, так что новое поле также указывает, какое имя является фамилией. Например, японцы ставят свои фамилии первыми, а их имена - последними. – Philipp

Смежные вопросы