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}})

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

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

Друго нещо за 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 Ако сте нов в програмирането, може би се опитвате да научите твърде много неща наведнъж. Първо научете Python и след това започнете да изучавате Pymongo, след като сте достатъчно уверени в основите на Python. - person JohnnyHK; 14.08.2012