簡體   English   中英

使用Flask-pymongo擴展通過_id在MongoDB中搜索文檔

[英]Search document in MongoDB by _id using Flask-pymongo extension

我對以下問題感到困惑。

我正在使用Flask,flask-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是msg集合中文檔的有效_id,但總是返回None。

我試過了:

  • 使用ObjectId(id)但返回errortype:ObjectId不可調用
  • 將id作為str(id)返回None

有什么想法嗎?

更新:這個完整的URL如何:

http://127.0.0.1:8000/check/5030b628895b800de1a9a792

UPDATE2:

我發現了類似的問題(回答)紅寶石。 不知道我怎么能把它翻譯成python,我需要什么樣的導入/模塊?

如何通過_id檢索文檔?

更新3:我試過:

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)

但我得到TypeError:'module'對象不可調用 (它也不能用於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)

您可能還想嘗試使用bson.objectid模塊中的ObjectId ,如下所示:

from bson.objectid import ObjectId

在這種情況下,您不需要提供oid kwarg。 你會做這樣的事情:

db_conn.msg.find_one({'_id': ObjectId(my_oid)})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM