RDBMS 的一大优势是 SQL 作为一种非常声明性和强大的查询语言。我知道 MongoDB 有一种查询语言,但它不包括连接。有没有人尝试为 MongoDB 制作一种高级查询语言
a) 处理不同集合的连接?
b) 通过查看集合中的索引和索引的基数来巧妙地处理连接——即模仿 SQL 中的查询计划?
似乎您应该能够编写更高级别的查询语言,使用 (b) 来巧妙地输出 Javascript 代码和执行 (a) 的 Mongo 本机查询的组合。
RDBMS 的一大优势是 SQL 作为一种非常声明性和强大的查询语言。我知道 MongoDB 有一种查询语言,但它不包括连接。有没有人尝试为 MongoDB 制作一种高级查询语言
a) 处理不同集合的连接?
b) 通过查看集合中的索引和索引的基数来巧妙地处理连接——即模仿 SQL 中的查询计划?
似乎您应该能够编写更高级别的查询语言,使用 (b) 来巧妙地输出 Javascript 代码和执行 (a) 的 Mongo 本机查询的组合。
1) MongoDB确实有“查询计划”。不过,它的做法略有不同。它衍生出各种选项以并行运行相同的查询,并查看哪个首先完成,然后记住它并将其用作编译计划一段时间,然后再次重新运行测试以考虑数据的变化等。
2)跨集合加入将使 Mongo 跨不同节点运行散列和合并,这将减慢其他客户端的速度。不允许这样的查询并将其推送到应用程序显然是一个有意识的决定。您可以构建您的文档,以便您拥有所需的一切(因此支持嵌套文档),或者您在客户端中进行连接
最后但并非最不重要的一点是,有人尝试在 NoSQL 数据库中构建统一的查询语言——UnQL——但在面向列、面向文档、键值和图形数据库之间存在如此大的差异,所以人们可以做的事情太多了概括查询数据的过程。
还有一些关于这个主题的信息: