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})
Я что-то упускаю или есть другой способ сделать такую сортировку без извлечения документа, сортировки и замены? Это была бы очень трудоемкая операция. Спасибо!
{ $sort: -1 }
упорядочить значения первого элемента. Но во втором случае лучше использовать ту же структуру"k"
и"v"
с объектами. Затем вы можете$sort: { v: -1 }
по значению. Но нет никаких обозначений для текущей формы. Трудно запросить, как это, а также. - person Neil Lunn   schedule 13.07.2017