Mongodb检查并添加参考值

时间:2012-09-05 13:56:58

标签: mongodb mongodb-java mongodb-query

我有两个系列。

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中是否没有此功能?如果错了,任何人都可以指导我。

1 个答案:

答案 0 :(得分:1)

我认为你已经犯下了MongoDB的经典错误,认为它具有任何关系能力。

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

这只是一个驱动程序方面的能力,可以使用像getConnected()这样的函数以标准化方式懒散地抓住其他行,从而自我描述ID。

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

我认为你可以说这个行为应该存在于DBRef类中,并且当设置为之前没有设置的值时,它应该检查该另一行是否存在。但目前它没有。