Mongodb是否有一个插件来查询多个集合,如“join”?

时间:2014-06-21 16:25:35

标签: node.js mongodb

Mongodb不支持多集合查询,例如SQL中的“左连接”。它只支持“填充”,但它不能填充子文档并同时查找父文档。

SQL中的一行查询代码,而mongodb用户必须自己查询每个父文档。

我遇到过这些问题: How to populate other collection's subdocument in mongoose?

https://stackoverflow.com/questions/24075910/mongoose-cant-update-or-insert-subdocuments-array

我终于在forEach循环中自己查询每个_id。

是否有插件可以查询多个集合,例如“join”?或者有更好的多集合查询解决方案吗?

1 个答案:

答案 0 :(得分:1)

  

是否有插件可以查询多个集合,例如“join”?

某些数据库产品具有提供额外功能的插件,例如PostGIS for Postgres。 MongoDB没有JOIN这样的插件。这样的插件不太可能存在,因为MongoDB被设计为而不是以获得连接支持。

  

...猫鼬

所以有一个“加入式”支持的地方就是司机。 某些驱动程序和包装器(,如Morphia )支持从不同的集合中打开文档及其相关的子文档。但是,在这种情况下,驱动程序/工具只是代表您执行多个查询的工作。

这很容易生成太多查询。

  

或者是否有更好的解决方案来进行多集合查询?

完全在MongoDB中提供的唯一解决方案是通过Map / Reduce或Aggregation Framework工具。即使使用这些工具,您也可能需要多次传递数据,然后编写一些脚本来拼接这些数据。这将是很多工作,但你正在尝试做一些MongoDB不喜欢做的事情,所以这是预期的。

另一种解决方案是利用Hadoop。 MongoDB有一个Hadoop插件,因此您可以在现有数据上运行Hadoop。添加一些Hadoop查询工具(如Hive),然后您可以在顶部获得类似SQL的查询。这也将是很多工作,但将能够运行各种类似SQL的查询。