热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL与MongoDB的对比

查询:MySQL:SELECT*FROMuserMongo:db.user.find()MySQL:SELECT*FROMuserWHEREname’starlee’Mongo:db.user.find({‘name’:’starlee’})插入:MySQL:INSERTINOTuser(`name`,`age`)va

查询:   

MySQL:   

SELECT * FROM user   

Mongo:   

db.user.find()  

  

MySQL:   

SELECT * FROM user WHERE name = ’starlee’   

Mongo:   

db.user.find({‘name’ : ’starlee’})   

  

插入:   

MySQL:   

INSERT INOT user (`name`, `age`) values (’starlee’,25)   

Mongo:   

db.user.insert({‘name’ : ’starlee’, ‘age’ : 25})   

  

如果你想在MySQL里添加一个字段,你必须:   

ALTER TABLE user….   

但在MongoDB里你只需要:   

db.user.insert({‘name’ : ’starlee’, ‘age’ : 25, ‘email’ : ’starlee@starlee.com’})   

  

删除:   

MySQL:   

DELETE * FROM user   

Mongo:   

db.user.remove({})   

  

MySQL:   

DELETE FROM user WHERE age <30   

Mongo:   

db.user.remove({‘age’ : {$lt : 30}})   

  

$gt : > ; $gte : >= ; $lt : <; $lte : <= ; $ne : !=   

  

更新:   

  

MySQL:   

UPDATE user SET `age` = 36 WHERE `name` = ’starlee’   

Mongo:   

db.user.update({‘name’ : ’starlee’}, {$set : {‘age’ : 36}})   

  

MySQL:   

UPDATE user SET `age` = `age` + 3 WHERE `name` = ’starlee’   

Mongo:   

db.user.update({‘name’ : ’starlee’}, {$inc : {‘age’ : 3}})   

  

MySQL:   

SELECT COUNT(*) FROM user WHERE `name` = ’starlee’   

Mongo:   

db.user.find({‘name’ : ’starlee’}).count()   

  

MySQL:   

SELECT * FROM user limit 10,20   

Mongo:   

db.user.find().skip(10).limit(20)   

  

MySQL:   

SELECT * FROM user WHERE `age` IN (25, 35,45)   

Mongo:   

db.user.find({‘age’ : {$in : [25, 35, 45]}})   

  

MySQL:   

SELECT * FROM user ORDER BY age DESC   

Mongo:   

db.user.find().sort({‘age’ : -1})   

  

MySQL:   

SELECT DISTINCT(name) FROM user WHERE age > 20   

Mongo:   

db.user.distinct(‘name’, {‘age’: {$lt : 20}})   

  

MySQL:   

SELECT name, sum(marks) FROM user GROUP BY name   

Mongo:   

db.user.group({   

key : {‘name’ : true},   

cond: {‘name’ : ‘foo’},   

reduce: function(obj,prev) { prev.msum += obj.marks; },   

initial: {msum : 0}   

});   

  

MySQL:   

SELECT name FROM user WHERE age <20   

Mongo:   

db.user.find(‘this.age <20′, {name : 1})   

  

发现很多人在搜MongoDB循环插入数据,下面把MongoDB循环插入数据的方法添加在下面:   

  

for(var i=0;i<100;i++)db.test.insert({uid:i,uname:’nosqlfan’+i});   

  

上面一次性插入一百条数据,大概结构如下:   

{ “_id” : ObjectId(“4c876e519e86023a30dde6b8″), “uid” : 55, “uname” : “nosqlfan55″ }   

{ “_id” : ObjectId(“4c876e519e86023a30dde6b9″), “uid” : 56, “uname” : “nosqlfan56″ }   

{ “_id” : ObjectId(“4c876e519e86023a30dde6ba”), “uid” : 57, “uname” : “nosqlfan57″ }   

{ “_id” : ObjectId(“4c876e519e86023a30dde6bb”), “uid” : 58, “uname” : “nosqlfan58″ }   

{ “_id” : ObjectId(“4c876e519e86023a30dde6bc”), “uid” : 59, “uname” : “nosqlfan59″ }   

{ “_id” : ObjectId(“4c876e519e86023a30dde6bd”), “uid” : 60, “uname” : “nosqlfan60″ }   

  

  

简易对照表   

SQL Statement                                         Mongo Query Language Statement   

CREATE TABLE USERS (a Number, b Number)             implicit; can be done explicitly   

INSERT INTO USERS VALUES(1,1)                       db.users.insert({a:1,b:1})   

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':{$lt: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})   

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})   

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()   

EXPLAIN SELECT * FROM users WHERE z=3               db.users.find({z:3}).explain()   

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()   

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'});


推荐阅读
  • 小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限
    小王详解:内部网络中最易理解的NAT原理剖析,挑战你的认知极限 ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 第一步java代码条件匹配与之对应的mongo数据查询第二步:java代码分组查询与之所对应的mongodb中sheel与所得出的表点击某个_id字段进入,所得出的图表为第三步:在 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 本文介绍了多种开源数据库及其核心数据结构和算法,包括MySQL的B+树、MVCC和WAL,MongoDB的tokuDB和cola,boltDB的追加仅树和mmap,levelDB的LSM树,以及内存缓存中的一致性哈希。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • Oracle字符集详解:图表解析与中文乱码解决方案
    本文详细解析了 Oracle 数据库中的字符集机制,通过图表展示了不同字符集之间的转换过程,并针对中文乱码问题提供了有效的解决方案。文章深入探讨了字符集配置、数据迁移和兼容性问题,为数据库管理员和开发人员提供了实用的参考和指导。 ... [详细]
  • 华为与红帽联手,加速开源电信软件革新
    华为与红帽携手合作,旨在加速开源电信软件的发展,以满足大型电信运营商对灵活网络解决方案的需求。 ... [详细]
author-avatar
mobiledu2502871567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有