當使用Python和pymongo從Mongo數據庫獲取子文檔的對象結果時,出現這個奇怪的問題。與MongoDb和Python返回的相同子文檔的多個記錄問題
我有一份包含子文檔列表的文檔,例如
User: {
"_id": ....
hats: [{"colour": "blue" }]
}
我用find_one()來查詢它。它返回文檔的細節和一個子文檔記錄。然而,接下來我會回答兩個「帽子」,第二個是第一個複製品。隨着下一個我拿回三個「帽子」,並繼續像這樣。
如果我重新啓動應用程序,上面的「count」將被重置,所以find_one()查詢將再次返回一個子文檔。
數據庫中肯定只有一個子文檔記錄,所以這不是問題。在內存方面,它一定會做些奇怪的事情。
我正在使用Python「Tornado」框架,該應用程序是一個tornado.wsgi.WSGIApplication。每次有新的請求時,都應該打開一個新的連接。
請求處理程序一起,我真的很困惑關於它可能是什麼
class Handler(RequestHandler):
def initialize(self):
self.db = MongoClient("localhost", 27017)
線的東西。
我們需要更多信息來幫助調試。你可以在它周圍顯示「find_one」調用和幾行代碼嗎?你提到了一個「count」,但在你的例子中沒有「count」字段,所以你沒有向我們展示相關的代碼。 –
我指的是重複子文檔的數量。不是數據庫調用。找到的一切都不復雜,它只是.find_one({「_ id」:as_objectid(lobby_id)})。 as_objectid只是一個函數,如果值爲None,則返回None None ObjectId(str(value))「 – John
謝謝John。到目前爲止,您分享的內容並沒有指向我的解決方案,因此如果您實際上可以粘貼執行find_one的代碼以及其他任何循環代碼?你寫道,「接下來我做了查詢,我找回兩個帽子」,那麼觸發額外查詢的是什麼?這不是MongoDB或PyMongo中的一個已知錯誤,所以我期待看到足夠的*你的*代碼,我可以看到這個錯誤。 –