MongoDB ObjectId外键实现建议

时间:2011-12-08 21:15:40

标签: mongodb foreign-keys pymongo database nosql

我正在寻找有关如何最好地实现MongoDB外键ObjectId字段的建议。似乎有两种可能的选项,包括嵌套的_id字段或不包含嵌套{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':{'_id':ObjectId('4ee12488f047051590000001')} } 字段。

查看下面的 fkUid 字段。

{'_id':ObjectId('4ee12488f047051590000000'), 'fkUid':ObjectId('4ee12488f047051590000001')} }

OR

{{1}}

非常感谢任何建议。

4 个答案:

答案 0 :(得分:7)

我很难在其中添加额外的字段“图层”,因此我个人只会将ObjectId直接存储在fkUid中。

答案 1 :(得分:1)

我建议使用默认的dbref实现,这里描述http://www.mongodb.org/display/DOCS/Database+References并且与大多数特定的语言驱动程序兼容。

答案 2 :(得分:0)

如果您的问题是关于字段的命名(标题中的内容),通常约定是在它引用的对象之后命名。

答案 3 :(得分:0)

你提到的两种方式都是同一个含义。但他们有不同的用法。

像对象'fkUid':{'_id':ObjectId('4ee12488f047051590000001')}一样存储fkUid有它自己的专业人士。让我举一个例子,假设有一个网站,用户可以发布图像和查看其他用户发布的图像。但在显示图像时,网站还会显示用户的名称/用户名。通过这种方式,您还可以存储'fkUid':{'_id':ObjectId('4ee12488f047051590000001'), username: 'SOME_X'}等详细信息。当您从数据库获取详细信息时,您不必再次发送请求以获取特定_id的用户名。

在第二种方式'fkUid':ObjectId('4ee12488f047051590000001')} }中,您必须向服务器发送另一个请求,仅用于获取名称/用户名,而其他任何内容对同一对象都没有用。