1

我有两个系列。

checkone
{"_id":1,"name":"alex"},
{"_id":2,"name":"sandy"}

checktwo
{"_id":11,"password":"alex",tenant_id:{$ref:"checkone","$id":1}}
{"_id":12,"password":"suman",tenant_id:{$ref:"checkone","$id":2}}

Checktwo tenant_id 引用 checkone id 的值。

但是当我尝试在 checktwo 中插入另一个文档时

 {"_id":13,"password":"shan",tenant_id:{$ref:"checkone","$id":6}}

它被插入。它不检查在 checkone id 值中是否存在tenant_id 值 6 并将其添加。在这种情况下,id 值 6 在 checkone 中不存在,但它被插入到 checktwo 租户 ID 值中。

实际上它必须检查并插入它吗?

我很困惑 $ref 在这里是什么意思?

这个功能在 mongodb 中是否不可用?如果我错了,谁能指导我。

4

1 回答 1

1

我认为您对 MongoDB 犯了一个典型的错误,即认为它具有任何关系能力。

DBRef 没有关系,并且在任何情况下都不支持服务器端。它不被视为一个完整的外键或连接到其他表的约束。

拥有一个自我描述的 ID 只是一种驾驶员方面的能力,它以一种标准化的方式来懒惰地使用类似getConnected().

JOIN 和约束的功能在 MongoDB 中不存在,您必须在您的客户端代码中手动检查是否6存在。

我想您可能会争辩说这种行为应该存在于 DBRef 类中,并且当设置为以前未设置的值时,它应该检查其他行的存在。然而,目前还没有。

于 2012-09-05T14:25:25.187 回答