当前位置:  开发笔记 > 编程语言 > 正文

如何在NoSql数据库(MongoDB)中强制执行外键?

如何解决《如何在NoSql数据库(MongoDB)中强制执行外键?》经验,为你挑选了2个好方法。

假设我有一些文档集合,例如:

{ "_id" : 0 , "owner":0 "name":"Doc1"},{ "_id" : 1 , "owner":1, "name":"Doc1"}, etc

而另一方面,业主被表示为一个单独的集合:

{ "_id" : 0 , "username":"John"}, { "_id" : 1 , "username":"Sam"}

如何在插入文档时确保以正确的方式引用用户.在旧式RDBMS中,可以使用外键轻松完成.

我知道我可以从我的业务代码中检查插入的正确性,但是如果攻击者篡改我对服务器的请求并将"所有者":100放入,那么Mongo不会抛出任何异常.

我想知道如何在真实的单词应用程序中处理这种情况.

先感谢您!



1> mdahlman..:

MongoDB没有外键(正如你可能已经注意到的那样).因此,基本上答案是"不要让用户篡改请求.只允许应用程序插入遵循参照完整性规则的数据."

MongoDB在很多方面都很棒......但是如果你发现你需要外键,那么它可能不是你问题的正确解决方案.



2> SethO..:

回答您的具体问题 - 当MongoDB鼓励在客户端处理外键关系时,他们也提供"数据库引用"的想法 - 请参阅此帮助页面.

也就是说,我不建议使用DBRef.让您的客户端代码管理关联或(更好)从一开始就将文档链接在一起.您可能需要考虑在所有者对象本身内嵌入所有者的"文档".组装您的文档以符合您的使用模式,MongoDB将大放异彩.

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有