代码之家  ›  专栏  ›  技术社区  ›  Soviut

dbref是否可以包含其他字段?

  •  4
  • Soviut  · 技术社区  · 14 年前

    我在使用MongoDB时遇到了几种需要使用DBRefs的情况。但是,我还想将引用文档中的一些字段缓存在DBRef本身中。

    {$ref:'user', $id:'10285102912A', username:'Soviut'}
    

    例如,即使引用了用户文档,我也可能希望用户名可用。这将为我提供单一文档方法的所有好处;更快的查询和消除在我的代码中手动取消引用的需要。同时允许我在有意义的地方使用参考资料。

    其思想是,当被引用的文档被更新时(例如,用户更改其名称),我的业务层可以自动更新引用它的所有文档。

    最后,我想知道在DBRefs上存储额外字段是否被认为是一种好的形式?会弄坏什么吗?每次重写引用时都会丢失数据吗?像pymongo这样的司机会支持吗?

    1 回复  |  直到 7 年前
        1
  •  5
  •   kris    14 年前

    最后,我想知道在DBRefs上存储额外字段是否被认为是一种好的形式?

    有单独的“cached”和“ref”字段可能会更干净。。。这取决于你的数据是什么样的。

    你可以,但如果你小心点就不行。如果要更新DB ref子对象,只需确保更新的是要更新的特定字段,而不是覆盖整个子对象。

    记住,引用只是普通对象。数据库引用是标准类型,而不是特殊类型。