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

标签 mongodb reference foreign-keys database

出于测试目的,我需要在 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/

相关文章:

node.js - 如何将 HTTP REQUEST PUT 与 odata.PUT 结合使用来更新数据库条目?

javascript - 如何更新 meteor.js 中的 Mongodb 集合?

c# - 将复杂对象序列化到 mongoDB

c++ - 从 ‘const type*’ 到 ‘type*’ 的无效转换

c++ - 在参数列表中创建的临时变量的生命周期是否包含函数调用?

c++ - 在类中存储引用

mysql - 要不要在 MySQL 中使用外键?

postgresql - 通过外键获取表名

mysql - 只有 2 个外键的表有什么作用?

javascript - 基于条件的文档中各个字段的聚合计数