RDBMS的一大优势是SQL作为一种非常具说明性和功能强大的查询语言。我知道MongoDB有一种查询语言,但它不包括连接。有没有人试图为MongoDB制作高级查询语言
a)处理不同馆藏的连接?
b)通过查看集合中的索引和索引的基数来巧妙地连接句柄 - 即在SQL中模仿查询计划?
看起来您应该能够编写更高级别的查询语言,该语言使用(b)智能地输出Javascript代码和执行(a)的Mongo本机查询的组合。
答案 0 :(得分:11)
1) MongoDB确实有“查询计划”。它does it a little differently though。它会旋转各种选项以并行运行相同的查询并查看哪一个首先完成,然后记住它并将其用作编译计划一段时间,然后再次重新运行测试以考虑更改数据等
2)跨集合加入将使Mongo运行散列并在不同节点之间进行合并,这会降低其他客户端的速度。显然有意识地决定不允许这样的查询并将其推送到应用程序。您要么构建自己的文档,以便拥有所需的一切(support for nested documents),要么在客户端进行连接
最后但并非最不重要的是,尝试在NoSQL数据库中构建统一的查询语言 - UnQL - 但在面向列,面向文档,键值和图形数据库之间存在很大差异人们可以做很多事情来概括查询数据的过程。
还有一些关于这个主题的内容: