2012-08-03 56 views
2

出於測試目的我需要在MongoDB中手動創建一些對象。我的班級有另一個班級的參考字段。被引用的對象已經存在。MongoDB - 手動創建對象 - DBRef不起作用

我試圖把蒙戈-ID我現有的對象作爲我的新對象的值,但我得到了以下錯誤:

A ReferenceField only accepts DBRef: ['attribute'])

現在我的問題:我在哪裏可以得到或找到這個DBRef


一個例子: 我有我的數據庫用戶。我想創建一個現有用戶爲"creator"的組。當我把用戶ID爲作成場我的錯誤...

編輯:

我剛剛發現這個鏈接MongoDB - DBRef但解決方案不爲我工作...

item : {"$ref" : "fruit", "$id" : "1"} 

我的代碼是這樣的:

{ "name" : "MyGroup", "created_at" : "2011-05-22T00:46:38", "creator": { "$ref": "user", "$id": "501bd5ac32f28a1278e54435" } } 

另一個編輯:

即使是Mongo doc說我正在使用正確的格式... http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON。但仍然沒有工作。

+1

你使用什麼語言/框架? – 2012-08-03 14:10:12

+0

Django和MongoEngine ...但我通過shell創建對象(僅用於測試) – Ron 2012-08-03 14:12:21

+1

然後發佈一些代碼。 – 2012-08-03 14:14:10

回答

2

question you referenced中,用戶使用數字字符串作爲文檔ID。在你的情況下,它看起來像你正在使用更常見的ObjectId,但將其作爲字符串插入。假設您正在使用PyMongo,您可能需要使用ObjectId類作爲DBRef$id屬性。

如果您知道所有這些引用將指向相同的數據庫和集合,那麼使用手動引用(僅存儲目標文檔的_id)而不是DBRef對象可能很有意義。這在Database References documentation中有更詳細的解釋。