2011-10-17 93 views
1

編輯: 我已經略微提煉了一個問題。pymongo查詢沒有輸出

mongo_documents = mongo_collection.find({"medicalObjectId": "269"}) 
print "\n\n" 
for this_document in mongo_documents: 
    print this_document 

print "-------------------------" 

pqr = 269 
mongo_documents2 = mongo_collection.find({"medicalObjectId": pqr}) 
print "\n\n" 
for this_document2 in mongo_documents2: 
    print this_document2 

我的問題是,我使用數字作爲查詢中的關鍵字的第一個代碼塊工作。但是,我使用變量的第二塊,我沒有輸出。


我是python和pymongo的初學者,請耐心等待。

我有一個列表爲; row = [1,2,...,100]

我想爲列表中的每個條目查詢一個mongodb集合。 收集的格式爲: 集合= {「PK」,「ATTRIBUTE1」,「attribute2」,「attribute3」}

我想打電話給MongoDB的連接,並通過與排在我的列表中的每個條目迭代[我] = pk並返回其他屬性作爲輸出。

即。 mongo_documents = mongo_collection.find({'pk':row [0]}) mongo_documents = mongo_collection.find({'pk':row [1]}) 等等。

,我有代碼:

for row in result_set: 
    print row[0] 
    mongo_documents = mongo_collection.find({'medicalObjectId' : row[0]}) 
    print mongo_documents 
    for this_document in mongo_documents: 
     print "----------------------------------" 
     print this_document 

但是我沒有得到任何輸出。我哪裏錯了? 如果我打印mongo_documents,我得到

<pymongo.cursor.Cursor object at 0xe43150> 
+0

你爲什麼不使用IPython的,並試圖檢查this_document變量。當然,查找API並在代碼中正確獲取文檔更容易,但我會鼓勵您在初學者時使用它。 – spicavigo 2011-10-17 13:22:30

+0

儘管有上面的評論,讓我解釋一下。 mongo_document是一個將用於獲取結果的遊標。你可以像對待迭代器一樣對待它,並繼續調用它的next()方法來獲取下一個匹配的文檔,直到出現StopIteration異常。否則,你在循環中完成它的方式 – spicavigo 2011-10-17 13:27:16

回答

4

你可以使用$ MongoDB中的操作來獲取所有的行一次,並遍歷它們。

mongo_documents = mongo_collection.find({ 'medicalObjectId' : { '$in' : result_set } }); 
for doc in mongo_documents: 
    print mongo_documents 

我還沒有測試過,下面評論如果它不起作用。

編輯

mongo_documents2 = mongo_collection.find({"medicalObjectId": str(pqr)}) 
print "\n\n" 
for this_document2 in mongo_documents2: 
    print this_document2 
+0

它沒有工作。 再次沒有輸出,例外或其他。我得到的只是我打印的清單。 列表中的條目是整數,所以數據類型兼容性也不是問題。 – 2011-10-18 06:22:02

+0

你可以用你當前的代碼和你得到的輸出來編輯你的問題。 – spicavigo 2011-10-18 06:24:37

+0

我在這裏主要問題是thibk; 'mongo_documents = mongo_collection.find({'medicalObjectId':row [0]})' 如果我使用數字而不是變量,它的工作原理。 即。 'mongo_documents = mongo_collection.find({'medicalObjectId':'269'})' 的作品。但是,如果我使用具有值269的vriable將無法工作。 即。 'abc = 269 mongo_documents = mongo_collection.find({'medicalObjectId':abc})' 將不會輸出。 – 2011-10-18 06:35:49