【发布时间】:2020-06-25 14:04:02
【问题描述】:
这是信息收集和样本数据:
- 查询以获取所有带有
eid:abc并按角色排序的文档。db.information.find({eid:"abc"}).sort({role:1})给予期待 结果,但是当更改eid:aaa时,结果不会进入排序 顺序,顺序是随机的。 - 在将排序对象更改为
role:-1时发生冲突,其排序 以升序输出,然后对于eid:abc输出进来 降序。它只是表现得很奇怪。
使用 MongoDB shell 版本 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"]}]
【问题讨论】:
-
更新问题将您从不同查询中获得的所有响应。
-
语法应该是
.sort({ "role": 1 })而不是.sort:{role: 1}。虽然我认为你实际上在 shell 中使用了正确的语法。