2011-07-09 53 views
1

當我訪問本地主機:8000 /管理員給我錯誤 '//admin/ getObjectsReturned get()返回多個會話 - 它返回2!查找參數爲{'session_key':'ee5a8be487352e42a89f962ee4ab22a6','expire_date__gt':datetime.datetime(2011,7,8,5,38,36,645053)}'Django + MongoDB使用mongodb引擎給出多個對象返回

如果訪問mongodb並刪除其中一行在收集django_session它的作品,但過了一段時間給了我相同的錯誤,因爲它是在集合中創建另一個文檔django_session

更新:即使在瀏覽器中我刪除了存儲會話ID的cookie,然後我能夠運行頁面順利。然後當我刷新或點擊鏈接我得到多個對象返回錯誤。

這是django的mongodb引擎的一個問題,它試圖爲每個頁面刷新添加會話id。

回答

1

默認情況下,MongoDB在_id字段上創建唯一索引。但是,它看起來像使用session_key字段,默認情況下該字段不是唯一的,這可能解釋您如何獲取兩個條目。

查看正在使用的索引:./mongo localhost:8000/admin --eval "db.system.indexes.find()"並查看這不僅僅是索引問題。有關創建唯一索引的信息是here

您可能還想看看創建django_session文檔的代碼。他們可能會做一些「不完全正確」的事情導致錯誤。