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”?或者有更好的多集合查询解决方案吗?
答案 0 :(得分:1)
是否有插件可以查询多个集合,例如“join”?
某些数据库产品具有提供额外功能的插件,例如PostGIS for Postgres。 MongoDB没有JOIN这样的插件。这样的插件不太可能存在,因为MongoDB被设计为而不是以获得连接支持。
...猫鼬
所以有一个“加入式”支持的地方就是司机。 某些驱动程序和包装器(,如Morphia )支持从不同的集合中打开文档及其相关的子文档。但是,在这种情况下,驱动程序/工具只是代表您执行多个查询的工作。
这很容易生成太多查询。
或者是否有更好的解决方案来进行多集合查询?
完全在MongoDB中提供的唯一解决方案是通过Map / Reduce或Aggregation Framework工具。即使使用这些工具,您也可能需要多次传递数据,然后编写一些脚本来拼接这些数据。这将是很多工作,但你正在尝试做一些MongoDB不喜欢做的事情,所以这是预期的。
另一种解决方案是利用Hadoop。 MongoDB有一个Hadoop插件,因此您可以在现有数据上运行Hadoop。添加一些Hadoop查询工具(如Hive),然后您可以在顶部获得类似SQL的查询。这也将是很多工作,但将能够运行各种类似SQL的查询。