这些天我正在学习MongoDB。我发现MongoDB不支持join。 我只是想知道为什么MongoDB选择这样做?
提前感谢..
答案 0 :(得分:3)
通常非规范化取代sql join。
例如,在stackoverflow上你有问题和他的拥有者,在mongodb中通常情况下将所有者数据变为问题并避免加入:
question
{
_id,
text,
user_short :
{
id,
full_name
}
}
肯定会导致更新的额外复杂性,但是当您读取数据时,它会显着提高性能。对于大多数应用程序,读取率为95%,写入率仅为5%甚至更低。
答案 1 :(得分:1)
因为MongoDb是一个非关系型数据库。非关系数据库不支持通过设计加入。
答案 2 :(得分:0)
您现在可以使用$lookup
$lookup
需要四个参数
from
:指定同一数据库中的集合以执行连接。 from集合无法分片。
localField
:指定输入到$ lookup阶段的文档中的字段。 $ lookup通过from集合的文档在localField上执行与foreignField的相等匹配。
foreignField
:指定from集合中文档的字段。
as
:指定要添加到输入文档的新数组字段的名称。新数组字段包含来自集合的匹配文档。
db.Foo.aggregate(
{$unwind: "$bars"},
{$lookup: {
from:"bar",
localField: "bars",
foreignField: "_id",
as: "bar"
}},
{$match: {
"bar.testprop": true
}}
)