Массив сортировки MongoDB $

MongoDB предоставляет очень полезный модификатор $sort для использования с операцией $push, но, к сожалению, похоже, что я могу попросить его отсортировать мои элементы только по именованному ключу, которого у меня нет.
Другим вариантом, который может быть альтернативой, является функция сортировки: sort({'array.0': 1})source , но что, если у меня есть массив внутри массива?

Структура моих документов в коллекции выглядит следующим образом:

{
"_id" : 123456,
"v" : [ 
    [ 
        some id, 
        some score
    ], 
    [ 
        "456456", 
        1.5
    ], 
    [ 
        "654645", 
        43
    ],
    ...
]
}

И я хочу отсортировать массив v по счету (второй элемент) каждого дочернего массива.

Итак, используя $sort: я не могу использовать имя ключа

'$push': {
    'v': {
        '$each': [[id, score]],
        '$sort': {???: -1},
    }
}

и используя sort(): я не могу использовать массив массивов:

sort({'v.???.0': -1})

Я что-то упускаю или есть другой способ сделать такую ​​сортировку без извлечения документа, сортировки и замены? Это была бы очень трудоемкая операция. Спасибо!


person Nadav S.    schedule 13.07.2017    source источник
comment
Достаточно справедливый вопрос, но вы действительно не можете этого сделать. Вы можете { $sort: -1 } упорядочить значения первого элемента. Но во втором случае лучше использовать ту же структуру "k" и "v" с объектами. Затем вы можете $sort: { v: -1 } по значению. Но нет никаких обозначений для текущей формы. Трудно запросить, как это, а также.   -  person Neil Lunn    schedule 13.07.2017
comment
@NeilLunn Спасибо! Я решил изменить подмассив на документ и дать имена каждому полю (id, score). Для моей базы данных это займет несколько часов, но это мой лучший выбор.   -  person Nadav S.    schedule 13.07.2017