首先介绍一些关系数据库中常用的概念对比MongoDB中与之对应的概念。
Oracle MongoDB
DataBase DataBase
Table(表) Collection(集合)
index(索引) index(索引)
row(一行记录) BSON(类似JSON格式) http://bsonspec.org/
column(列,字段) BSON中的字段
join(连接) embedding and linking(嵌入和连接)
primary key(主键) _id field(ID标识符)
group by(分组) aggregation(聚合)
其实在学习MongoDB过程中我们就是要忘记模式,记住”键值对”就可以啦。
MongoDB的查询是通过JSON(BSON)对象,来表示的。接下来我们将通过对比展示SQL和MonggoDB的查询语法
SQL语句 MongoDB语句
Create table users(a int,b int)建立一张表 我们无需显式创建Collection,前面讲了在我们保存第一条文档的时候MongoDB会自动创建,当然我们也可以显示的建立: Collection: db.createCollection("users", { capped:true, size:100000}) // capped:是否覆盖 size:大小以字节为单位
Alter table users……… 模式自由
inert into users value(3,5) |
db.users.insert({a:3,b:5}) |
|
|
select a,b from users |
db.users.find({}, {a:1,b:1}) |
select * from users |
db.users.find() |
select * from users where age=33 |
db.users.find({age:33}) |
select a,b from users where age=33 |
db.users.find({age:33}, {a:1,b:1}) |
select * from users where age=33 order by name |
db.users.find({age:33}).sort({name:1}) |
select * from users where age>33 |
db.users.find({age:{$gt:33}}) |
select * from users where age!=33 |
db.users.find({age:{$ne:33}}) |
select * from users where name like "%Joe%" |
db.users.find({name:/Joe/}) |
select * from users where name LIKE "Joe%" |
db.users.find({name:/^Joe/}) |
select * from users where age>33 and age<=40 |
db.users.find({'age':{$gt:33,$lte:40}}) |
select * from users order by name desc |
db.users.find().sort({name:-1}) |
select * from users where a=1 and b='q' |
db.users.find({a:1,b:'q'}) |
select * from users limit 10 skip 20 |
db.users.find().limit(10).skip(20) |
select * from users where a=1 or b=2 |
db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } ) |
select * from users limit 1 |
db.users.findOne() |
select order_id from orders o, order_line_items li where li.order_id=o.order_id and li.sku=12345 |
db.orders.find({"items.sku":12345},{_id:1}) |
select customer.name from customers,orders where orders.id="q179" and orders.custid=customer.id |
var o = db.orders.findOne({_id:"q179"}); var name = db.customers.findOne({_id:o.custid}) |
|
|
select distinct last_name from users |
db.users.distinct('last_name') |
select count(*y) from users |
db.users.count() |
select count(*y) from users where age > 30 |
db.users.find({age: {'$gt': 30}}).count() |
select count(age) from users |
db.users.find({age: {'$exists': true}}).count() |
|
|
create index myindexname on users(name) |
db.users.ensureIndex({name:1}) |
create index myindexname ON users(name,ts desc) |
db.users.ensureIndex({name:1,ts:-1}) |
|
|
explain select * from users where z=3 |
db.users.find({z:3}).explain() |
|
|
update users set a=1 where b='q' |
db.users.update({b:'q'}, {$set:{a:1}}, false, true) |
update users set a=a+2 where b='q' |
db.users.update({b:'q'}, {$inc:{a:2}}, false, true) |
|
|
delete from users where z="abc" |
db.users.remove({z:'abc'}); |
更多请见: http://api.mongodb.org/wiki/current/SQL%20to%20Aggregation%20Framework%20Mapping%20Chart.html
这些都是常用的SQL语句,当然掌握这些就足够后面的开发啦。
CREATE TABLE USERS (a Number, b Number) | Implicit or use MongoDB::createCollection(). |
INSERT INTO USERS VALUES(1,1) | $db->users->insert(array("a" => 1, "b" => 1)); |
SELECT a,b FROM users | $db->users->find(array(), array("a" => 1, "b" => 1)); |
SELECT * FROM users WHERE age=33 | $db->users->find(array("age" => 33)); |
SELECT a,b FROM users WHERE age=33 | $db->users->find(array("age" => 33), array("a" => 1, "b" => 1)); |
SELECT a,b FROM users WHERE age=33 ORDER BY name | $db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1)); |
SELECT * FROM users WHERE age>33 | $db->users->find(array("age" => array('$gt' => 33))); |
SELECT * FROM users WHERE age<33 | $db->users->find(array("age" => array('$lt' => 33))); |
SELECT * FROM users WHERE name LIKE "%Joe%" | $db->users->find(array("name" => new MongoRegex("/Joe/"))); |
SELECT * FROM users WHERE name LIKE "Joe%" | $db->users->find(array("name" => new MongoRegex("/^Joe/"))); |
SELECT * FROM users WHERE age>33 AND age<=40 | $db->users->find(array("age" => array('$gt' => 33, '$lte' => 40))); |
SELECT * FROM users ORDER BY name DESC | $db->users->find()->sort(array("name" => -1)); |
CREATE INDEX myindexname ON users(name) | $db->users->ensureIndex(array("name" => 1)); |
CREATE INDEX myindexname ON users(name,ts DESC) | $db->users->ensureIndex(array("name" => 1, "ts" => -1)); |
SELECT * FROM users WHERE a=1 and b='q' | $db->users->find(array("a" => 1, "b" => "q")); |
SELECT * FROM users LIMIT 10 SKIP 20 | $db->users->find()->limit(10)->skip(20); |
SELECT * FROM users WHERE a=1 or b=2 | $db->users->find(array('$or' => array(array("a" => 1), array("b" => 2)))); |
SELECT * FROM users LIMIT 1 | $db->users->find()->limit(1); |
EXPLAIN SELECT * FROM users WHERE z=3 | $db->users->find(array("z" => 3))->explain() |
SELECT DISTINCT last_name FROM users | $db->command(array("distinct" => "users", "key" => "last_name")); |
SELECT COUNT(*y) FROM users | $db->users->count(); |
SELECT COUNT(*y) FROM users where AGE > 30 | $db->users->find(array("age" => array('$gt' => 30)))->count(); |
SELECT COUNT(AGE) from users | $db->users->find(array("age" => array('$exists' => true)))->count(); |
UPDATE users SET a=1 WHERE b='q' | $db->users->update(array("b" => "q"), array('$set' => array("a" => 1))); |
UPDATE users SET a=a+2 WHERE b='q' | $db->users->update(array("b" => "q"), array('$inc' => array("a" => 2))); |
DELETE FROM users WHERE z="abc" | $db->users->remove(array("z" => "abc")); |
相关推荐
MongoDB的集合对应于SQL数据库中的表,文档则对应于表中的行,字段对应于表中的列。MongoDB提供了丰富的操作语句用于数据的增删改查(CRUD),这些操作语句既可以在命令行界面(CLI)中执行,也可以在各种编程语言的...
本软件使用c#编写,是SQL转存MongoDB的工具,可独立运行,也可定时运行,利用sql数据库时间戳字段进行更新采集区分。 本软件综合了,windows服务控制(安装卸载等),windows服务启动程序(服务控制定时运行程序),...
sql mongodb对应写法 方便大家查询
基于分布式文件存储,MongoDB适用于处理大量结构化和半结构化的数据,尤其适合于Web应用程序的数据存储需求。在MongoDB中,数据的导入与导出是日常运维和数据迁移的重要环节。 `mongodump` 和 `mongorestore` 是...
1. 对于MongoDB的3.1完全支持 2. 对认证企业的MongoDB 2.4和2.6版本 3. 全功能蒙戈GUI外壳采用代码自动完成和提示 4. 支持副本集和独立主机的连接 5. 易于使用的文档查看器和编辑器树,表和JSON视图模式 6. 数据库,...
1. **查询构造器**:类似于SQL的查询语句构造,允许开发者编写复杂的查询条件,如选择、聚合、排序、分组等。 2. **模型与映射**:ORM框架定义了模型类,这些类与MongoDB的文档结构相对应。模型类的属性映射到数据库...
相比于其他使用注解的ORM库,MJORM采用了一种不同的方法来实现对象与MongoDB之间的映射,这使得它在某些场景下更加实用。 **特点:** 1. **轻量级:**MJORM不依赖于复杂的框架或大量的第三方库,使得它易于集成到...
dbeaver21.1-enterprise-agent是一款强大的数据库管理工具,专为IT专业人士设计,尤其适用于处理NoSQL类型数据库,如MongoDB。在当今数据驱动的世界里,NoSQL数据库因其灵活的数据模型和高可扩展性,已经成为许多...
例如,`Person`类通过`@Document(collection="person")`声明对应于名为"person"的集合。 2. **MongoTemplate**:`MongoTemplate`是Spring Data MongoDB的核心组件,它提供了丰富的API来执行各种MongoDB操作。在示例...
- **NoSQL**:NoSQL(Not Only SQL)是一种非关系型数据库管理系统的总称,它突破了传统关系型数据库在处理大规模数据时的限制,尤其适用于大数据及高并发场景。NoSQL系统通常不要求固定的表结构,通常具有高度的...
本文将详细介绍SQL与MongoDB之间的查询语言对应关系。在数据库领域,SQL(Structured Query Language)是用于处理关系型数据库的标准语言,而MongoDB作为NoSQL数据库之一,采用的是基于文档的数据模型。两者虽然在...
在“mongodb-win32-i386-2.0.3”这个文件中,我们可以看到这对应的是MongoDB的一个早期版本,针对32位Windows系统的安装包。用户可以通过这个安装包在32位的Windows操作系统上部署MongoDB数据库。安装过程中,用户...
NoSQL指的是“不仅仅是SQL”,它是对于传统关系型数据库的一种补充,尤其适用于处理大量非结构化或半结构化数据的情况。NoSQL数据库与传统的关系型数据库相比,其主要优点包括高并发读写能力、海量数据存储、高可...
在实际应用中,Spark-MongoDB库还支持数据的 Upsert 操作,这意味着如果插入的数据已经存在于MongoDB中,那么原有数据将会被更新。这对于实时数据分析和ETL(提取、转换、加载)流程非常有用,因为它可以确保数据的...
- JSON schema验证在MongoDB中不同于SQL的表结构验证,需要使用特定的方法来实现。 - 考虑到MongoDB是非关系型数据库,设计数据模型时,要避免过于复杂的关联关系,充分利用其文档结构的优势。 **总结** "Laravel...
- 代表“不仅仅是SQL”,适用于处理大规模的非结构化和不可预测的数据。 - 没有固定的查询语言,更灵活地处理数据。 - 支持多种存储模型,如键值对存储、列存储、文档存储等。 - 通常支持最终一致性,而不是强...
- MongoDB的数据库文件存储在磁盘上,每个数据库对应一系列文件,包括数据文件和索引文件。 - 数据文件以固定的大小递增,最大不超过2GB。 - 索引文件用于加速查询操作,存储有关集合的信息。 **2.2 内存管理** - ...