2013-05-15 2 views
2

У меня есть такой документ:Получить элементы массива внутри MongoDB документа

Для этого _id, я хочу, чтобы все события с «events.time»> time1 (и только эти одни):

{ 
    "_id": ..., 
    "events": [ 
     {"time": 345678, "value": "1"}, 
     {"time": 567890, "value": "2"}, 
     ... 
    ] 
} 

Как я могу это сделать? Есть ли простой способ извлечения данных из массива внутри документа mongodb? (я использую Python 2.7 и mongod v2.2.4)

Спасибо за ваши ответы

+0

Вы должны принять некоторые ответы, если хотите, чтобы люди продолжали отвечать. – elyase

ответ

2

Лучшее решение в моем случае, казалось, выбрало другую схему для моей базы данных. Итак, я создал отдельную коллекцию событий ...

1

В то время как вы можете найти документы, основанные на содержании поддокументе массивов, Монго возвращает весь документ.

Если есть множество событий, и вы не можете сэкономить сетевой трафик, вам будет легче фильтровать массив на клиенте в Python.

Возможно, это больше проблем, чем того стоит, но если вы действительно хотите отфильтровать документы на сервере, вы можете сделать это, используя структуру агрегации. См. this answer.

+0

Спасибо за ваш ответ. У меня много событий, да. Я получаю сообщение об ошибке «TypeError: unhashable type: 'dict'" Я предполагаю, что он исходит из $ project part, но я не нахожу, как его решить ... Идея? –

+0

Вы разместили свой код? – paulmelnikow

+0

Я, наконец, собираюсь изменить структуру базы данных. Я создаю базу данных событий. Я думаю, что это будет более естественное использование манго и более эффективный способ сделать это. Я прав? –