15
我對以下問題感到困惑。使用Flask-pymongo擴展名_id在MongoDB中搜索文檔
我用的燒瓶,燒瓶pymongo擴展,MongoDB的版本V2.2.0,RC0,pdfile 4.5版
這是我的路線:
@app.route("/check/<id>")
def check(id):
doc=conn.db.msg.find_one({'_id':id})
return render_template('base.html',name=doc)
的ID是從文檔的有效_id在msg集合中,但總是返回None。
我曾嘗試:
- 考取了的ObjectId(ID),但返回的errortype:OBJECTID不可調用的
- 考取ID作爲STR(id)返回無
有什麼想法?
UPDATE: 這個完整的URL看起來像:
http://127.0.0.1:8000/check/5030b628895b800de1a9a792
UPDATE2:
我發現(答案)的紅寶石類似的問題。不知道我怎麼能把它翻譯成python,我需要什麼樣的import/modules?
How can I retrieve a document by _id?
UPDATE3: 我想:
import bson
@app.route("/check/<id>")
def check(id):
id2="'"+id+"'"
doc=conn.db.msg.find_one({'_id':bson.objectid(id2) })
return render_template('base.html',name=doc)
,但我得到類型錯誤: '模塊' 對象不是可調用(它不具有ID工作,要麼)
當我達到1500我會建議沮喪標籤:-S
UPDATE4:
最後我把它弄起來&正在運行!
這裏是我的解決方案:
import bson
@app.route("/check/<id>")
def check(id):
doc=conn.db.msg.find_one({'_id':bson.ObjectId(oid=str(id))})
return render_template('base.html',name=doc)
我試圖pymongo.objectid(ID)和沒有工作...現在我知道爲什麼....謝謝 – Altons
高興你得到它的工作! – aezell
順便說一句,我們要更新PyMongo文檔的下一個版本,警告人們瞭解這個陷阱: https://github.com/mongodb/mongo-python-driver/commit/dcf546f0b08e59d0d2c4f09a08fd9fe07017256a 希望有所幫助。 –