为什么我不能在select *from student
中使用像MongoDB
这样的常规SQL查询(假设有一个名为学生的表),尽管他们说这不仅是SQL(NoSql)?
答案 0 :(得分:2)
SQL是一种特定于域的语言,用于编程,旨在用于 管理关系数据库管理系统(RDBMS)中保存的数据
使用这样一种特定的语言从DBMS(MongoDB)查询数据是否会引起混乱,这种结构与RDBMS的结构不同,RDBMS没有表,行和列的概念,而联接不存在,您可以在没有定义模式的情况下将文档嵌套到其他文档中,等等?
要点在于,SQL和Mongo查询语言之间的区别不仅是语法,而且还是语义。 Mongo查询不会用不同的语言说出与SQL查询相同的东西,而是说完全不同的话。
确定可以找到基本SQL查询的直接Mongo转换,例如简单的SELECT item, status from inventory WHERE status = "A"
,但是如何将JOIN
转换为Mongo,或者如何使用SQL查询嵌套文档?< / p>
答案 1 :(得分:1)
我不确定我是否完全理解这个问题。...但是我会尝试一下。
NoSQL是一个非关系数据库,代表“不仅仅是SQL” ...至于无法使用它,是因为MongoDB具有自己的术语等等。
在MongoDB中,集合与表相同。集合是MongoDB文档的分组(文档是MongoDB集合中的记录,是MongoDB中数据的基本单位)
为了翻译您的声明
select *from student
对于MongoDB,我们将使用
db.student.find()
请注意语句中的不同语法。他们每个人都有自己的用例,只是找到适合自己的用例。除了语法之外,这两种语法之间还有很多区别,例如架构,体系结构以及它们的工作方式。
有关此的更多信息,请参见以下链接: MongoDB terminology versus SQL