我有两个系列。
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中插入另一个doc时
{"_id":13,"password":"shan",tenant_id:{$ref:"checkone","$id":6}}
它被插入。它不检查tenone_id值6是否存在于checkone id值中并添加它。在这种情况下,idone 6在checkone中不存在,但它插入checktwo tenant_id值。
实际上必须检查并插入它吗?
我有一个混乱,$ ref在这里意味着什么?
mongodb中是否没有此功能?如果错了,任何人都可以指导我。
答案 0 :(得分:1)
我认为你已经犯下了MongoDB的经典错误,认为它具有任何关系能力。
DBRef没有任何关系,并且在任何以前都不支持服务器端。它不被视为整数外键或连接到其他表的约束。
这只是一个驱动程序方面的能力,可以使用像getConnected()
这样的函数以标准化方式懒散地抓住其他行,从而自我描述ID。
在MongoDB中不存在JOIN和约束的功能,您必须在客户端代码中手动支持6
存在。
我认为你可以说这个行为应该存在于DBRef类中,并且当设置为之前没有设置的值时,它应该检查该另一行是否存在。但目前它没有。