С MongoDB вы можете сортировать документы или выбирать только некоторые части документов, но вы не можете изменять документы, возвращаемые поисковым запросом.
Если текущий порядок ваших комментариев можно изменить, то лучшим решением будет сортировка их в документах MongoDB (find()
, затем для каждого документа сортируйте свои комментарии и update()
). Если вы хотите сохранить текущий внутренний порядок комментариев, вам придется сортировать каждый документ после каждого запроса.
В обоих случаях сортировка будет выполняться с помощью PHP. Что-то вроде:
foreach ($doc['list'] as $list) {
// uses a lambda function, PHP 5.3 required
usort($list['comments'], function($a,$b){ return $a["datetime"] < $b["datetime"] ? -1 : 1; });
}
Если вы не можете использовать PHP 5.3, замените лямбда-функцию на обычную. См. usort () примеры .