出于测试目的,我需要在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。但仍然无法正常工作。
答案 0 :(得分:4)
在question you referenced中,用户使用数字字符串作为其文档ID。在您的情况下,看起来您正在使用更常见的ObjectId,但将其作为字符串插入。假设您正在使用PyMongo,您可能希望将ObjectId类用于DBRef的$id
属性。
如果您知道所有此类引用都指向同一个数据库和集合,则使用手动引用(仅存储目标文档的_id
)而不是DBRef对象可能是有意义的。这在Database References documentation。