2012-05-04 3 views
2

Можно ли отсортировать мой массив MongoDB отзывов на дату публикации отзыва? Должен ли я сделать это в своем сценарии на стороне сервера, а не с помощью оператора запроса? Если да, то как мне это сделать?MongoDB Sort Array

{ 
    "review": [ 
    { 
     "date": "2012-05-04 21:06:58", 
     "review": "The Review", 
     "name": "The Persons Name", 
    }, 
    { 
     "date": "2012-09-04 21:06:58", 
     "review": "The Review", 
     "name": "The Persons Name", 
    }, 
    { 
     "date": "2012-02-04 21:06:58", 
     "review": "The Review", 
     "name": "The Persons Name", 
    } 
    ], 
    "category": "Category 1", 
    "country": "USA", 
    "date": "2012-05-04 21:06:58" 
} 
+0

Сортировка массива сортировки [usort] (http://www.php.net/usort) – ngsiolei

ответ

2

Поскольку вы положили в тегах, я предполагаю, что вы работаете с PHP. Вы можете создать свою собственную функцию сортировки для этого и вызвать ее с помощью функции PHP usort().

function sort_date($a, $b) 
{ 
    return (strtotime($a['date']) - strtotime($b['date'])); 
} 

usort($reviews_array, 'sort_date'); 

Приведенный выше код сортирует отзывы по дате в порядке возрастания.

+0

Более C-ish/lazier способ написать компаратор может быть просто сделать return (strtotime ($ a) - strtotime ($ b)); ' – Corbin

+0

Итак, я беру, что невозможно сделать подобное в mongodb? Позвольте мне спросить об этом, вы думаете, что быстрее будет использовать такую ​​функцию, чтобы отсортировать как 100 обзоров или отделить отзывы от коллекции продуктов и сделать коллекцию обзоров? – cKendrick

+0

@cKendrick Я не специалист по MongoDB, поэтому я не могу сказать, что это невозможно. Я опубликовал этот ответ в качестве альтернативного решения. Хотя, если бы я был вами, я бы определенно разделил обзоры на другую коллекцию. –