MongoDB - DBREF是否必要?

Ind*_*ial 22 mongodb dbref

使用MongoDB中的DBREF数据类型,文档可能如下所示.但是$ref每行中的字段都显得多余,因为每一行都明显指向users集合.

有没有办法引用其他文件而没有多余的$ref余地?

{
    $id: {$oid : "4f4603820e25f4c515000001"},
    title:   "User group",
    users: [ 
        {_id: {$ref: "users", $id: { $oid: "4f44af6a024342300e000002"}}, isAdmin: true }
    ]
],
Run Code Online (Sandbox Code Playgroud)

And*_*ich 39

在使用mongodb时,我认为应该避免使用Dbref,至少如果您使用需要可伸缩性的大型系统.

据我所知,所有驱动程序都提出了加载DBRef的额外请求,因此它不是在数据库中" 加入 ",而是非常昂贵.

有没有办法在没有多余的$ ref-field的情况下引用其他文档?

是的,请记住引用,为" 外键 "(类似于RefUserId或仅仅是UserId)创建命名约定,并仅存储引用文档的id.需要时自己加载参考文档.也可以睁大眼睛看任何非规范化,嵌入你可以做,因为它通常会大大提高性能.

  • 这不是使用DBRef或只是_id的问题,而是如何使用链接语义来解决它们.如果你有非同质引用(对多个集合),那么你将需要集合和_id == DBRef. (3认同)

zul*_*mal 7

除非您使用特定于驱动程序的方法进行访问dbref,否则它是不必要的

如果你手动管理连接(即你知道哪个其他集合要"加入"),只存储ObjectId就足够了.