Mongodb中等效连接的详细信息

时间:2015-03-16 18:57:45

标签: mongodb

据我所知,mongodb不支持"加入"正如人们在关系数据库中发现的那样,但是我并不确定具体是什么意思。

这是否意味着你不能要求mongodb做出以下的平等:

SELECT p.name, j.title FROM person p, job j where p.p_id = j.j_id

或仅仅是因为它没有为您强制执行参照完整性?

我也希望了解这与链接("加入"?)集合有何关联。我相信该集合的_id引用应该像FK一样使用,但我不确定这是否依赖于提供相关代码来执行连接的应用程序,或者mongodb是否支持使用其本地语言查询

2 个答案:

答案 0 :(得分:0)

您必须在多个查询中手动执行此操作。 MongoDB查询仅对一个集合进行操作,并且集合彼此独立。

答案 1 :(得分:0)

现在,您可以使用$ lookup在mongodb 3.2中的 unsharded 集合上执行左外部等连接。

{
   $lookup:
     {
       from: <collection to join>,
       localField: <field from the input documents>,
       foreignField: <field from the documents of the "from" collection>,
       as: <output array field>
     }
}

有关详细信息,请参阅Mongodb $lookup

但是,即使mongodb支持联接,它也是非关系型数据库,因此您不应在应用程序中频繁执行此类联接。您应该更喜欢嵌入此类文档。