MongoDB 是一个非关系型数据库(NoSQL),它使用的是基于JSON格式的文档来存储数据,而不是传统的表格形式。因此,MongoDB 不直接支持 SQL 查询语言。但是,为了帮助熟悉 SQL 的用户更容易地过渡到 MongoDB,MongoDB 提供了一个名为 mongoDB compass
的图形界面工具,并且从 MongoDB 3.2 版本开始引入了 mongoDB shell
中的 aggregate
方法来实现更复杂的查询,这些功能在一定程度上可以实现类似 SQL 的查询效果。
如果你想将 SQL 查询转换为 MongoDB 的查询语法,这里有一些基本的对应关系:
-
查询所有数据
- SQL:
SELECT * FROM table_name;
- MongoDB:
db.collection_name.find({});
- SQL:
-
选择特定字段
- SQL:
SELECT column1, column2 FROM table_name;
- MongoDB:
db.collection_name.find({}, {column1: 1, column2: 1});
- SQL:
-
条件查询
- SQL:
SELECT * FROM table_name WHERE column = 'value';
- MongoDB:
db.collection_name.find({column: 'value'});
- SQL:
-
LIKE 查询
- SQL:
SELECT * FROM table_name WHERE column LIKE '%pattern%';
- MongoDB:
db.collection_name.find({column: {$regex: 'pattern', $options: 'i'}});
// 'i' 是忽略大小写的选项
- SQL:
-
ORDER BY
- SQL:
SELECT * FROM table_name ORDER BY column ASC/DESC;
- MongoDB:
db.collection_name.find().sort({column: 1/-1});
// 1 为升序,-1 为降序
- SQL:
-
LIMIT 和 SKIP (OFFSET)
- SQL:
SELECT * FROM table_name LIMIT n OFFSET m;
- MongoDB:
db.collection_name.find().skip(m).limit(n);
- SQL:
-
JOIN 操作
- SQL 中常用的 JOIN 操作在 MongoDB 中并不直接支持,因为它是文档型数据库,通常会通过嵌套文档或使用
lookup
阶段在聚合管道中实现关联操作。
- SQL 中常用的 JOIN 操作在 MongoDB 中并不直接支持,因为它是文档型数据库,通常会通过嵌套文档或使用
如果你需要执行更复杂的查询,比如聚合、分组、统计等操作,MongoDB 提供了 aggregate
方法,其功能强大,可以实现类似 SQL 中 GROUP BY
, HAVING
, COUNT
, SUM
等操作。
例如,SQL 中的 GROUP BY
可以用 MongoDB 的聚合管道表示为:
- GROUP BY
- SQL:
SELECT column, COUNT(*) FROM table_name GROUP BY column;
- MongoDB:
db.collection_name.aggregate([{ $group: { _id: '$column', count: { $sum: 1 } } }]);
- SQL: