【问题标题】:Mongodb checking and adding reference valueMongodb检查并添加参考值
【发布时间】:2012-09-05 13:56:57
【问题描述】:

我有两个系列。

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 中是否不可用?如果我错了,谁能指导我。

【问题讨论】:

    标签: mongodb mongodb-java mongodb-query


    【解决方案1】:

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

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

    拥有一个自我描述的 ID 只是一种驱动程序方面的能力,它以一种标准化的方式使用getConnected() 之类的函数懒惰地抓取另一行。

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

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

    【讨论】:

    • 我可以知道getConnected的目的吗?你能给我发一些链接吗?
    • @Ruben 这只是一个例子,但这里是 Java 的文档:api.mongodb.org/java/current/com/mongodb/DBRef.html,我认为getConnected() 函数实际上是你的 API 中的fetch
    猜你喜欢
    • 2019-11-13
    • 2016-01-10
    • 2021-02-25
    • 1970-01-01
    • 2011-04-06
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多