python - DBRefs 可以包含额外的字段吗?

标签 python mongodb pymongo dbref nosql

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

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

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

想法是当引用的文档更新时(例如,用户更改了他们的名字)我的业务层可以自动更新引用它的所有文档。

最后,我想知道在我的 DBRef 上存储附加字段是否被认为是一种好的形式?它会破坏任何东西吗?每次重写引用时我都会丢失数据吗?像pymongo这样的驱动会支持吗?

最佳答案

Ultimately, I'm wondering if it's considered good form to store additional fields on my DBRefs?

拥有单独的“缓存”和“引用”字段可能会更清晰……这取决于您的数据是什么样的。

Will I lose my data each time a reference is rewritten?

你可以,但如果你小心的话就不会了。如果您正在更新 DB ref 子对象,只需确保您正在更新您想要更新的特定字段,而不是覆盖整个子对象。

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

Will drivers like pymongo support it?

驱动程序的解引用助手仍然有效。助手只是使用 $ref 和 $id 字段执行 findOne。

关于python - DBRefs 可以包含额外的字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893858/

相关文章:

Python Kivy 如何将用 Python 制作的小部件注入(inject) kv 文件中的布局

node.js - Express Node.js Controller 不等待数据操作并返回旧数据

javascript - 什么是 minimongo (Meteor) 限制? cursor.toArray() 客户端失败

python - 在 Flask 中将表单 POST 对象转换为适合 mongodb 的表示形式

multithreading - 如何使用线程提高 pymongo 性能?

mongodb - mongo - 无法连接到服务器 127.0.0.1 :27017

python - 正则表达式点不起作用

python - 有条件地进入for循环

python - 给定一个对象,如何获取在运行时调用的绑定(bind)方法列表

node.js - Node JS 中 Celery 的等价物