Вижте sort()
определение.
sort({_id: -1, upvotes_count: -1})
означава сортиране на _id
първо, след това сортирайте upvotes_count
по поръчка само за същите _id
публикации. За съжаление, _id
е ObjectId
, който е 12-байтов тип BSON, конструиран с помощта на:
- 4-байтова стойност, представляваща секундите от епохата на Unix,
- 3-байтов идентификатор на машината,
- 2-байтов идентификатор на процеса и
- 3-байтов брояч, започващ с произволна стойност.
Трудно е да се получи същия ObjectId
. А именно _id
на всеки запис трябва да бъде уникален в този документ. В резултат на това резултатът от вашите тестови кодове просто се подрежда по _id
описание
Ето един пример,
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 4 | 8 |
Резултатът от sort({_id: -1, upvotes_count: -1})
трябва да бъде
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 4 | 8 |
| 4 | 7 |
| 3 | 9 |
| 1 | 5 |
upvote_count
ще бъдат сортирани за същия _id
.
Въпреки това, в този случай. Има на същия _id
в този случай.
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 4 | 7 |
| 3 | 9 |
| 2 | 8 |
Резултатът от sort({_id: -1, upvotes_count: -1})
трябва да бъде
+---------+---------------+
| _id | upvote_count |
+---------+---------------+
| 1 | 5 |
| 2 | 8 |
| 3 | 9 |
| 4 | 7 |