这些天我在学习MongoDB。我发现MongoDB不支持join。我只想知道为什么MongoDB选择这样做?
提前谢谢..
发布于 2012-08-30 14:33:14
通常情况下,反规范化会替换sql连接。
例如,在stackoverflow上,你有问题和他的所有者,在mongodb中,正常情况下将所有者数据反规范化为有问题的,并避免连接:
question
{
  _id,
  text,
  user_short :
  {
    id,
    full_name
  }
}这肯定会增加更新复杂性,但在读取数据时会显著提高性能。对于大多数应用程序来说,读操作是95%,而写操作只有5%甚至更少。
发布于 2012-08-30 14:32:57
因为MongoDb是一个非关系型数据库。非关系型数据库不支持join,这是设计好的。
发布于 2017-01-12 10:45:11
现在你可以在Mongo3.2中使用$lookup完成这项工作
$lookup有四个参数
from:指定要执行联接的同一数据库中的集合。不能对from集合进行分片。
localField:指定从文档输入到$lookup阶段的字段。$lookup对来自from集合的文档中的localField与foreignField执行相等匹配。
foreignField:指定from集合中文档的字段。
as:指定要添加到输入文档的新数组字段的名称。新的数组字段包含来自from集合的匹配文档。
db.Foo.aggregate(
  {$unwind: "$bars"},
  {$lookup: {
    from:"bar",
    localField: "bars",
    foreignField: "_id",
    as: "bar"
   }},
   {$match: {
    "bar.testprop": true
   }}
)https://stackoverflow.com/questions/12191053
复制相似问题