Как выполнить этот вид в MongoDB?(встроенная сортировка) - PullRequest
3 голосов
/ 01 мая 2011
chat = {
        messages: [ { body:"asdf", timestamp: 234256243 },
                 { body:"asdf", timestamp: 234256241 },
                 { body:"asdf", timestamp: 544256244 },
};

Предположим, у меня была коллекция чатов. Я хочу найти комнаты с последними сообщениями. Как отсортировать по отметке времени сообщений?

chat.find().sort...by messages array timestamp descending.

Это встроенная сортировка.

Ответы [ 3 ]

6 голосов
/ 26 июня 2012

Вещи изменились за год. Mongodb теперь поддерживает сортировку по встроенным массивам.

db.chat.find().sort({'messages.timestamp': -1})
5 голосов
/ 01 мая 2011

В настоящее время не поддерживается сортировка встроенных массивов в MongoDB. Вам нужно будет выполнить сортировку на стороне клиента с выбранным вами языком программирования.

0 голосов
/ 02 мая 2011

В качестве альтернативы вы можете захотеть добавить атрибут 'latestMessage' в комнату чата (родительский документ), который обновляется всякий раз, когда публикуется новое сообщение.

Затем вы можете просто искать и заказывать по убыванию chat.latestMessage.

Бит дублирования данных, но облегчает вашу жизнь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...