Найти - Пользователи
Полная версия: Выбрать сообщения из чата с заданным именем
Начало » Базы данных » Выбрать сообщения из чата с заданным именем
1
guvatu
Всем доброго времени суток и я сразу прошу прощения за такой длинный листинг, но иначе боюсь что-то упустить.
Имеется у меня в mongodb коллекция с документами такого вида:

{
  u'room_name': u'My first channel',
  u'users': [
  ],
  u'_id': ObjectId('53badcb68d9c3013c1594199'),
  u'messages': [
    {
      u'content': u'q joined',
      u'public_login': u'q',
      u'datetime': 1404758871,
      u'avatar': u'/static/img/user_dump.jpg',
      u'attach_list': [
      ]
    },
    {
      u'content': u'q joined',
      u'public_login': u'q',
      u'datetime': 1404758874,
      u'avatar': u'/static/img/user_dump.jpg',
      u'attach_list': [
      ]
    },
    {
      u'content': u'q joined',
      u'public_login': u'q',
      u'datetime': 1404758877,
      u'avatar': u'/static/img/user_dump.jpg',
      u'attach_list': [
      ]
    },
    {
      u'content': u'q joined',
      u'public_login': u'q',
      u'datetime': 1404758886,
      u'avatar': u'/static/img/user_dump.jpg',
      u'attach_list': [
      ]
    },
    {
      u'content': u'q joined',
      u'public_login': u'q',
      u'datetime': 1404758886,
      u'avatar': u'/static/img/user_dump.jpg',
      u'attach_list': [
      ]
    }
  ]
}

нужно выбрать сообщения из комнаты с именем ‘My first channel’, datetime которых больше 1404758874
сейчас дошел до варианта запроса

db.channels.find({'room_name': 'My first channel',
                    'messages.datetime': {'$gt': 1404758874}
                }, {'messages': 1, '_id': 0})

но, как я понимаю, эта штука выбирает все сообщения, если в комнате My first channel есть сообщения с datetime больше 1404758874. Подскажите, пожалуйста, как составить нужный мне запрос.
terabayt
используй filter
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB