Sono sconcertato dal seguente problema.Cerca documento in MongoDB da _id utilizzando l'estensione Flask-pymongo
Sto usando Flask, estensione fiasco-pymongo, MongoDB versione v2.2.0-RC0, pdfile versione 4.5
Questo è il mio percorso:
@app.route("/check/<id>")
def check(id):
doc=conn.db.msg.find_one({'_id':id})
return render_template('base.html',name=doc)
L'ID è una _id valida da un documento nella raccolta msg, ma restituisce SEMPRE Nessuno.
ho provato:
- pasing l'ObjectId (id), ma restituisce errortype: non ObjectID richiamabile
- pasing l'id come str (id) restituisce None
Qualche idea?
UPDATE: questo modo l'url completo è:
http://127.0.0.1:8000/check/5030b628895b800de1a9a792
UPDATE2:
Ho trovato una domanda simile con (risposta) per Ruby. Non so come posso tradurlo in Python, che tipo di importazioni/moduli ho bisogno?
How can I retrieve a document by _id?
Update3: ho provato:
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)
ma ottengo TypeError: oggetto 'modulo' non è richiamabile (doesnt lavoro con id o)
quando ho Raggiunto il 1500 suggerirò un tag frustazione tag: -S
UPDATE4:
Finalmente ho preso su & in esecuzione!
qui è la mia soluzione:
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)
ho cercato pymongo.objectid (id) e non ha funzionato ... ora so perché .... Grazie – Altons
Glad you got it lavoro! – aezell
A proposito, stiamo aggiornando la documentazione PyMongo per la prossima release di mettere in guardia la gente su questa trappola: https://github.com/mongodb/mongo-python-driver/commit/dcf546f0b08e59d0d2c4f09a08fd9fe07017256a Speranza che aiuta. –