2012-08-03 57 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中有更详细的解释。