出于测试目的,我需要在 MongoDB 中手动创建一些对象。我的类(class)有一个到另一个类(class)的引用字段。引用的对象已经存在。
我试图将现有对象的 Mongo-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 文档也说我使用了正确的格式... http://www.mongodb.org/display/DOCS/Mongo+Extended+JSON .但还是不行。
最佳答案
在question you referenced ,用户使用数字字符串作为他们的文档 ID。在您的情况下,看起来您正在使用更常见的 ObjectId 但将其作为字符串插入。假设您使用的是 PyMongo,您可能想使用 ObjectId DBRef 的 $id
属性的类.
如果您知道所有此类引用都将指向同一个数据库和集合,那么使用手动引用(仅存储目标文档的 _id
)而不是 DBRef 对象可能更有意义。这在 Database References documentation 中有更详细的解释。 .
关于MongoDB - 手动创建带引用的对象 - DBRef 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797316/