假设我有一系列文件,比如:

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

另一方面,所有者代表为一个单独的集合:

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

如何确保在插入文档时以正确的方式引用用户.在老式的RDBMS中,这可以很容易地使用外键完成.

我知道我可以从我的业务代码中判断插入的正确性,但如果攻击者篡改了我对服务器的请求,并将"owner":100放入,Mongo不会抛出任何异常,该怎么办.

我想知道在真正的word应用程序中应该如何处理这种情况.

提前谢谢!

推荐答案

MongoDB没有外键(您可能已经注意到).因此,基本上答案是,"不要让用户篡改请求.只允许应用程序插入符合引用完整性规则的数据."

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

Mongodb相关问答推荐

MongoDB与合并对象聚合

使用MongoDB作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

更新文档中的数组时,如何在 MongoDB 和 C# 中使用 $push 更新修饰符

Mongodb将重音字符匹配为基础字符

使用 mgo 存储嵌套 struct

在mongodb中实现分页

在 Ubuntu 14.04 中安装 MongoDB 失败

Mongoose Schema vs Mongo Validator

$elemMatch 的 MongoDB 索引

MongoDB 3 Java判断集合是否存在

MongoDB Compass 过滤器(查询)

MongoDB + Node JS + 基于角色的访问控制 (RBAC)

MongoException: Index with name: code already exists with different options

如何使用 mongoose 连接到 mongoDB Atlas

如何在 golang 和 mongodb 中通过 id 查找

MongoDB 连接字符串到副本集

将新值推送到 mongodb 内部数组 - mongodb/php

我可以只获取 Cursor 对象(pymongo)中的第一项吗?

用于 MongoDB 的 Node.js 模块

Pymongo/bson:将 python.cursor.Cursor 对象转换为可序列化/JSON 对象