7

我目前正在为我已经开始的项目评估 mongodb,但我找不到任何关于 mongodb 中的 SQL 视图等价物的信息。SQL 视图提供的我需要的是将来自不同表(集合)的数据集中到一个集合中。

我只想将一些文档聚集在一起并将它们标记为单个文档。这是一个例子:

我有以下文件: cc_address us_address billing_address shipping_address

但在我的应用程序中,我希望查看我的所有地址并能够在单个文档中管理它们。

在其他情况下,我可能只需要集合中的几个字段:

我有以下文件: fb_contact twitter_contact google_contact reddit_contact

这些文档中的每一个都有对齐的字段,例如 firstname lastname 和 email,但它们也有不对齐的字段。我希望能够将它们编译成一个仅包含对齐字段的文档。

这可以通过 SQL 中的 Views 来完成吗?我可以在 MongoDb 中完成这种功能吗?

4

4 回答 4

8

这个问题已经很老了。但是,从 mongodb v3.2 开始,只要集合未分片,您就可以使用$lookup将不同集合的数据连接在一起。从 mongodb v3.4 开始,您还可以创建只读视图

于 2016-11-21T13:40:15.273 回答
3

MongoDB 中没有“连接”。正如 JonnyHK 所说,您可以规范化数据或使用嵌入式文档或执行多个查询

但是,您也可以使用Map-Reduce

或者如果您准备使用开发分支,您可以测试新的聚合框架,尽管它可能太多了?这个新框架将在即将发布的2.2中,与 2.1.x 不同的是,它是生产就绪的。

这里还有SQL-Mongo 图表,可能对你的学习有所帮助。

更新:根据您的重新编辑,您不需要 Map-Reduce 或聚合框架,因为您只是在查询。

您实际上是在进行连接、查询多个文档并合并结果。执行此操作的位置在客户端的应用程序中。

于 2012-07-16T16:56:25.273 回答
1

MongoDB 查询永远不会跨越一个集合,因为不支持连接。因此,如果您需要在查询结果中提供相关数据,则必须将该相关数据添加到您正在查询的集合中(即非规范化您的数据),或者从另一个集合中对其进行单独查询。

于 2012-07-16T16:34:12.103 回答
0

我目前正在为我已经开始的项目评估 mongodb,但我找不到任何关于 mongodb 中的 SQL 视图等效的信息

除了这个答案,mongodb 现在还有按需物化视图。简而言之,此功能允许您使用aggregate$merge(在 4.2 中)创建/更新可以更快查询的快速视图集合。该策略用于在主集合发生记录更改时更新快速视图集合。与 SQL 不同,这具有增加数据存储大小的副作用。但是根据您的查询需求,好处可能是巨大的。

于 2021-05-18T23:17:28.270 回答