MongoDB - 手动创建对象 - DBRef不起作用

时间:2012-08-03 14:05:26

标签: mongodb reference foreign-keys database

出于测试目的,我需要在MongoDB中手动创建一些对象。我的班级有另一个班级的参考栏目。引用的对象已经存在。

我尝试将现有对象的Mongo-ID作为我的新对象中的值,但是我收到以下错误:

  

ReferenceField只接受DBRef:['attribute'])

现在我的问题:我在哪里可以找到或找到这个DBRef


一个例子: 我的数据库中有一个用户。我想创建一个现有用户为"creator"的组。当我将用户ID放入creator-field时,我收到错误...

编辑:

我刚发现此链接MongoDB - DBRef,但该解决方案对我不起作用......

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

我的代码是这样的:

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

另一个编辑:

即使是Mongo医生也说我使用了正确的格式...... http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON。但仍然无法正常工作。

1 个答案:

答案 0 :(得分:4)

question you referenced中,用户使用数字字符串作为其文档ID。在您的情况下,看起来您正在使用更常见的ObjectId,但将其作为字符串插入。假设您正在使用PyMongo,您可能希望将ObjectId类用于DBRef$id属性。

如果您知道所有此类引用都指向同一个数据库和集合,则使用手动引用(仅存储目标文档的_id)而不是DBRef对象可能是有意义的。这在Database References documentation

中有更详细的解释