MongoDB — Печать

Я заинтересован в печати диапазона запроса. У меня есть следующий код.

start = datetime.datetime(2012, 2, 2, 6, 35, 6, 764) 

end = datetime.datetime(2012, 2, 2, 6, 55, 3, 381) 

for doc in db.model.find({'time': {'$gte': start, '$lt': end}}): 
    print doc 

Он выполняет свою работу, распечатывая в основном то, как я вставил данные.

Мой вопрос таков:

Можно ли распечатать один элемент всего запроса? Например, я хочу, чтобы он печатал только элемент, дату или другой вставленный ввод, а не давал мне {'time': datetime.datime(....), 'input1': ..., 'item': . ..}. В противном случае моя программа сильно замедлилась бы, если бы мне пришлось повторно анализировать данные запроса mongodb, которые я уже проанализировал, чтобы поместить в mongodb.

Спасибо.


person user1590999    schedule 14.08.2012    source источник


Ответы (1)


Давайте немного познакомимся с тем, как работает pymongo.

Предположим, у вас есть некоторая коллекция в Mongo со вставленными данными. Вы хотите получить данные из этой коллекции, выполнив запросы:

cursor = db.model.find({'time': {'$gte': start, '$lt': end}})

Метод find объекта коллекции "model" возвращает Cursor объект: сущность, которая содержит всю информацию о запросе и результатах запроса.

Итак, запрос сделан, и следующий шаг — получение результатов. Типы результатов запросов Mongo могут отличаться от метода к методу. В нашем случае (метод find) - результатом является набор объектов JSON (объект итератора), каждый из которых представлен типом dict на языке Python. Это означает, что вам не нужно анализировать результаты: они уже преобразованы в словари.

Еще одна вещь о Cursor: это лениво. Это означает, что вы получаете результаты по запросу. В случае объекта Cursor вы должны выполнить итерацию по нему, чтобы получить объект, полученный с помощью запроса:

for result_object in cursor:
    print result_object   # result_object is a dict that holds JSON object
    result_object['_id']  # Mongo ObjectId of the result_object
    # result_object["<field_name>"]  # Value stored in a field named <fieldname>

Как правило, вам нужно попробовать прочитать учебник по Pymongo: он довольно короткий и дает направление как работает весь драйвер.

person Rostyslav Dzinko    schedule 14.08.2012
comment
большое тебе спасибо. вы сделали это очень ясно. Я новичок в программировании, поэтому понимание руководств/документов может быть затруднено. еще раз спасибо. :) - person user1590999; 14.08.2012
comment
@user1590999 user1590999 Если вы новичок в программировании, возможно, вы пытаетесь изучить слишком много вещей одновременно. Сначала изучите Python, а затем начните изучать Pymongo, как только вы будете достаточно уверены в основах Python. - person JohnnyHK; 14.08.2012