2012-08-14 54 views
0

我有興趣打印一系列查詢。我有以下代碼。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查詢數據,它會大大減慢我的程序。

謝謝。

回答

7

讓我們來了解一下pymongo的工作原理。

我們假設你在Mongo中有插入數據的一些集合。你想通過查詢來獲得從收集的數據:它包含有關查詢和查詢結果的所有信息的實體:中「模型」集合對象返回Cursor對象

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

方法發現。

所以查詢完成後,下一步就是獲得結果。 Mongo查詢的結果類型可能因方法而異。在我們的例子中(find方法) - 結果是一堆JSON對象(迭代器對象),它們中的每一個都用Python語言中的dict類型表示。這意味着您不必解析結果:它們已經被解析爲字典

關於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 Tutorial:這是相當短,給人的整體驅動程序是如何工作的方向。

+0

非常感謝。你說得很清楚。我是編程新手,因此理解教程/文檔可能很困難。再次感謝。 :) – user1590999 2012-08-14 19:16:43

+1

@ user1590999如果您對編程不熟悉,那麼您可能會嘗試一次學習太多東西。首先學習Python,然後開始學習Pymongo,一旦你對Python基礎知識充滿信心。 – JohnnyHK 2012-08-14 19:22:13