mongodb - 当文档仅保存非空列时面临排序问题
问题描述
当文档仅将非空列保存到文档中时面临排序问题:我的 mongodb 文档如下所示:
# documents-1 :
"taskId": "2",
"taskType": "RFOUTAUD",
"id": "5d25bdda2f7ef0000654f281",
"releaseDatetime": "2019-05-28T09:00:39",
"startDateTime": "2019-05-28T09:44:11",
"endDateTime": "2019-05-28T09:50:25",
"resourceId": "SUPER",
"deviceCode": "QATERM1",
"effectivePriority": 40,
"sourceLocation": "1SS100",
"sourceLocationTravelSequence": "020055000",
"sourceWorkZone": "1RCVSHP035",
"sourceWorkZoneTravelSequence": "15035",
文件-2:
"taskId": "70",
"taskType": "RFOUTAUD",
"id": "5d25bdda2f7ef0000654f281",
"releaseDatetime": "2019-05-28T09:00:39",
"startDateTime": "2019-05-28T09:44:11",
"endDateTime": "2019-05-28T09:50:25",
"resourceId": "SUPER",
"deviceCode": "QATERM1",
"effectivePriority": 40,
"sourceLocation": "1SS100",
"sourceLocationTravelSequence": "020055000",
"sourceWorkZone": "1RCVSHP035",
"goalTime": 20
#documents-1: 有 n 条记录,#documents-2 的记录很少 - 有附加列“goalTime”
现在,当我在“goalTime”列上使用 Pageable 进行排序时,结果我只得到具有“goalTime”的文档,并且不包括缺少列的文档,查询看起来像这样
db.getCollection('29ec09db-20b9-4c52-a5af-53519f75a5b4_task').find({}).limit(10).sort({goalTime:1})
在完成 org.springframework.data.domain.Sort 实现之后,我找到了包含那些列本身缺失的文档的方法。现在的问题是包含“goalTime”列的文档,其值为最后一条记录,如果我将限制设为 10,它将不会成为该结果的一部分。
这是 mongo 查询:
`db.getCollection('29ec09db-20b9-4c52-a5af-53519f75a5b4_task').find({}).limit(2).sort({goalTime:1,NULLS_LAST:1})`
我正在寻找结果,它首先显示已对列进行排序的文档,然后是列本身缺失的文档
解决方案
我找到了我正在寻找的解决方案。即使文档中不存在排序列,以下查询也包括记录db.getCollection('29ec09db-20b9-4c52-a5af-53519f75a5b4_task').find({}).limit(20).sort({goaltime: -1, NULL_LAST : 1})
推荐阅读
- javascript - 无法让模态工作
- python - Python:numpy 的 random.choice() 的更快替代方案?
- apache-flink - Apache Flink:State Backends 在哪里保存状态?
- java - GDPR 同意对话框不会显示
- r - 带有数字输入和反应列的 R 闪亮数据表
- ruby-on-rails - SPA 的令牌与 Cookie
- c# - Windows IOT C#/Xaml BitmapImage 编译器错误
- swift - 斯威夫特我无法添加变量字符串的子字符串结尾,值保持不变,有什么问题?
- php - 使用 $_SERVER["DOCUMENT_ROOT"] 返回目录
- javascript - Phaser游戏/学校项目,需要指导