MongoDB использует "dot notation" для обозначения вложенных элементов в структуре, так что вы действительно можете указать элемент по индексу:
db.collection.find().sort({ "funnelSteps.0.count": 1 })
Где порядок сортировки 1
по возрастанию или -1
для убывающих , См. .sort()
для более подробной информации.
Это нормально для «известной» положение элемента массива, но если вы хотите отсортировать чем-то таким, как «наименьшего» значения в пределах «funnelSteps», то вы могли бы сделать что-то вроде этого, используя .aggregate()
:
db.collection.aggregate([
{ "$unwind": "$funnelSteps" },
{ "$group": {
"_id": "$_id",
"funnelSteps": { "$push": "$funnelSteps" },
"lowestCount": { "$min": "$funnelSteps.count" }
}},
{ "$sort": { "lowestCount": 1 } }
])
Так что в этом случае вам нужно будет «разделить» массив, чтобы получить нужное значение перед сортировкой. Но для известной позиции вы можете просто использовать основные аргументы для сортировки, как показано.