Estoy desconcertado con el siguiente problema.Documento de búsqueda en MongoDB por _id usando la extensión Flask-pymongo
estoy usando frasco, matraz de extensión pymongo, mongodb versión v2.2.0-rc0, pdfile versión 4.5
Esta es mi ruta:
@app.route("/check/<id>")
def check(id):
doc=conn.db.msg.find_one({'_id':id})
return render_template('base.html',name=doc)
la identificación es un _id válida de un documento en la colección de msg, pero SIEMPRE devuelve None.
que he intentado:
- pasing la OBJECTID (id) pero devuelve errortype: no exigible OBJECTID
- pasing el id como str (id) devuelve Ninguno
¿Alguna idea?
ACTUALIZACIÓN: esta forma la URL completa se parece a:
http://127.0.0.1:8000/check/5030b628895b800de1a9a792
Update2:
me encontré con una pregunta similar (respuesta) de rubí. No estoy seguro de cómo puedo traducirlo a Python, ¿qué tipo de importaciones/módulos necesito?
How can I retrieve a document by _id?
Update3: me trataron:
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)
pero consigo TypeError: Objeto de 'módulo' no es exigible (no trabaja con id tampoco)
cuando llegó a 1500 Sugeriré una frustation etiqueta: -S
ACTUALIZACIÓN4:
Finalmente lo conseguí & funcionando!
aquí está mi solución:
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)
me trataron pymongo.objectid (id) y no funcionaba ... ahora sé por qué .... Gracias – Altons
Me alegro de que tengo trabajo! – aezell
Por cierto, estamos actualizando los documentos PyMongo para la próxima versión de advertir a la gente acerca de este escollo: https://github.com/mongodb/mongo-python-driver/commit/dcf546f0b08e59d0d2c4f09a08fd9fe07017256a Espero que ayude. –