2014-09-23 1 views

ответ

1

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 } } 
]) 

Так что в этом случае вам нужно будет «разделить» массив, чтобы получить нужное значение перед сортировкой. Но для известной позиции вы можете просто использовать основные аргументы для сортировки, как показано.

 Смежные вопросы

  • Нет связанных вопросов^_^