Вот сбор информации и примеры данных:
- Запрос на получение всех документов с
eid:abc
и отсортирован по ролям. db.information.find({eid:"abc"}).sort({role:1})
дает ожидаемый результат, но при изменении eid:aaa
результат приходит не в порядке сортировки, а порядок случайный. - В случае противоречивости при изменении объекта сортировки на
role:-1
вывод сортировки происходит в порядке возрастания, но затем для eid:abc
вывод идет в порядке убывания. он просто странно себя ведет.
Использование версии оболочки MongoDB v4.0.6:
information =[
{_id:'110',role:'dev',eid:'aaa',info:["a","b"]},
{_id:'111',role:'tester',eid:'abc',info:["a","b","c"]},
{_id:'112',role:'admin',eid:'abc',info:["a","c"]}
{_id:'113',role:'admin',eid:'abc',info:["a","b","c"]},
{_id:'114',role:'dev',eid:'abc',info:["a","b","c"]},
{_id:'115',role:'admin',eid:'aaa',info:["a","b","c"]}
];
Output:
1.when .find({eid:"aaa"}).sort:{role:1}
=>
[
{_id:'115',role:'admin',eid:'aaa',info:["a","b","c"]}
{_id:'110',role:'dev',eid:'aaa',info:["a","b"]},
];
2.when .find({eid:"abc"}).sort:{role:1}
=> [
{_id:'111',role:'tester',eid:'abc',info:["a","b","c"]},
{_id:'114',role:'dev',eid:'abc',info:["a","b","c"]}
{_id:'112',role:'admin',eid:'abc',info:["a","c"]}
{_id:'113',role:'admin',eid:'abc',info:["a","b","c"]}];
3.when .find({eid:"aaa"}).sort:{role:-1}
=>
[{_id:'110',role:'dev',eid:'aaa',info:["a","b"]}
{_id:'115',role:'admin',eid:'aaa',info:["a","b","c"]}]
4.when .find({eid:"abc"}).sort:{role:-1}
=>
[{_id:'113',role:'admin',eid:'abc',info:["a","b","c"]},
{_id:'112',role:'admin',eid:'abc',info:["a","c"]},
{_id:'111',role:'tester',eid:'abc',info:["a","b","c"]},
{_id:'114',role:'dev',eid:'abc',info:["a","b","c"]}]