Сортировка вложенных документов в MongoDB?

Здравствуйте!
Использую MongoDB в одном из проектов и хочу заного спроектировать базу, более компактно, используя вложенные документы. Возник вопрос. Допустим есть коллекция с большим количеством таких документов:
  1. {
  2.    "firstname": "Vasya",
  3.    "lastname": "Pupkin",
  4.    "created": 1300125070,
  5.    "ban": 0,
  6.    "posts": {
  7.     {
  8.        "title": "Hello!",
  9.        "post": "post post post",
  10.        "created": 1300125370,
  11.        "hash": "523343633a2fac703e84a3c6afcb3a8a",
  12.        "client_ip": "127.0.0.1"
  13.     },
  14.     {
  15.        "title": "Hello again!",
  16.        "post": "post post post",
  17.        "created": 1300125870,
  18.        "hash": "523343633a2fac703e84a3c6afcb3a8a",
  19.        "client_ip": "127.0.0.1"
  20.     }
  21.   }
  22. }

Собственно, основной вопрос с сортировками, как можно из всех записей всех пользователей выбрать последний post по posts.created? Как отсортировать документы по вложенным полям? В документации не нашел внятного ответа. Казалось бы, всё красиво и удобно, но сортировки обламывают подобную структуру.

Подскажите, кто имел опыт с MongoDB, как решаются подобные вещи?

Спасибо.
  • Вопрос задан
  • 4813 просмотров
Решения вопроса 1
sajgak
@sajgak
sort(array("posts.created" => -1))

должно работать, если я вас правильно понял
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
carbonariy
@carbonariy
Если посты при каждом создании добавляются в конец, то взять последний элемент массива. Если будут обновляться — при каждом обновлении удалять и добавлять в конец
Ответ написан
Комментировать
@FFF Автор вопроса
Я тоже подефолту все «размазал», но с вложенными документами выглядит красивее и по-идее работать с ними должно быть удобнее :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы