MySQL到MongoDB简易对照表的深入分析

内容摘要
这篇文章主要为大家详细介绍了MySQL到MongoDB简易对照表的深入分析,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!查询:MySQL:SEL
文章正文

这篇文章主要为大家详细介绍了MySQL到MongoDB简易对照表的深入分析,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随php教程的小玲来看看吧!

查询:MySQL:SELECT * FROM userMongo: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 userMongo:db.user.remove({})MySQL:DELETE FROM user WHERE age < 30Mongo: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,20Mongo: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 DESCMongo:db.user.find().sort({‘age' : -1})MySQL:SELECT DISTINCT(name) FROM user WHERE age > 20Mongo:db.user.distinct(‘name', {‘age': {$lt : 20}})MySQL:SELECT name, sum(marks) FROM user GROUP BY nameMongo: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 < 20Mongo: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 StatementCREATE TABLE USERS (a Number, b Number) implicit; can be done explicitlyINSERT 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'});###################################################一、操作符操作符相信大家肯定都知道了,就是等于、大于、小于、不等于、大于等于、小于等于,但是在mongodb里不能直接使用这些操作符。在mongodb里的操作符是这样表示的:(1) $gt > (大于)   (2) $lt  < (小于)   (3) $gte  >= (大于等于)(4) $lt  <= (小于等于)  (5) $ne  != (不等于) (6) $in  in (包含)      (7) $nin  not in (不包含)  (8) $exists  exist (字段是否存在) (9) $inc  对一个数字字段field增加value(10) $set  就是相当于sql的set field = value(11) $unset  就是删除字段  (12) $push  把value追加到field里面去,field一定要是数组类型才行,如果field不存在,会新增一个数组类型加进去(13) $pushAll  同$push,只是一次可以追加多个值到一个数组字段内(14) $addToSet  增加一个值到数组内,而且只有当这个值不在数组内才增加。(15) $pop  删除最后一个值:{ $pop : { field : 1 } }删除第一个值:{ $pop : { field : -1 } }注意,只能删除一个值,也就是说只能用1或-1,而不能用2或-2来删除两条。mongodb 1.1及以后的版本才可以用(16) $pull  从数组field内删除一个等于value值(17) $pullAll  同$pull,可以一次删除数组内的多个值(18) $ 操作符  是他自己的意思,代表按条件找出的数组里面某项他自己。这个比较坳口,就不说了。二、CURD 增、改、读、删增加

代码如下:


db.collection->insert({'name' => 'caleng', 'email' => 'admin#admin.com'});
是不是灰常简单呀,对就是这么简单,它没有字段的限制,你可以随意起名,并插入数据

代码如下:


db.collection.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } ); 只更新了第一条大于1记录
db.collection.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true ); 大于3的记录 全更新了
db.collection.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false ); 大于4的记录 只加进去了第一条
db.collection.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true ); 大于5的记录 全加进去 
查询

代码如下:


db.collection.find(array('name' => 'bailing'), array('email'=>'email@qq.com'))
db.collection.findOne(array('name' => 'bailing'), array('email''email@qq.com')) 
大家可以看到查询我用了两种不同的写法,这是为什么,其实这跟做菜是一样的,放不同的调料,炒出的菜是不同的味道。下面给大家说一下,这两种调料的不同作用。findOne()只返回一个文档对象,find()返回一个集合列表。也就是说比如,我们只想查某一条特定数据的详细信息的话,我们就可以用findOne();如果想查询某一组信息,比如说一个新闻列表的时候,我们就可以作用find();那么我想大家这时一定会想到我想对这一个列表排序呢,no problem mongodb会为您全心全意服务

代码如下:


db.collection.find().sort({age:1}); //按照age正序排列
db.collection.find().sort({age:-1}); //按照age倒序排列
db.collection.count(); //得到数据总数
db.collection.limit(1); //取数据的开始位置
db.collection.skip(10); //取数据的结束位置
//这样我们就实现了一个取10条数据,并排序的操作。 
删除删除有两个操作 remove()和drop()

代码如下:


db.collection.remove({"name",'jerry'}) //删除特定数据
db.collection.drop() //删除集合内的所有数据 
distinct操作

代码如下:


db.user.distinct('name', {'age': {$lt : 20}}) 
2. 熟悉MongoDB的数据操作语句,类sql数据库操作语法mongo --pathdb.AddUser(username,password) 添加用户db.auth(usrename,password) 设置数据库连接验证db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库db.commandHelp(name) returns the help for the commanddb.copyDatabase(fromdb,todb,fromhost) 复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址db.createCollection(name,{size:3333,capped:333,max:88888}) 创建一个数据集,相当于一个表db.currentOp() 取消当前库的当前操作db.dropDataBase() 删除当前数据库db.eval(func,args) run code server-sidedb.getCollection(cname) 取得一个数据集合,同用法:db['cname'] or db.cnamedb.getCollenctionNames() 取得所有数据集合的名称列表db.getLastError() 返回最后一个错误的提示消息db.getLastErrorObj() 返回最后一个错误的对象db.getMongo() 取得当前服务器的连接对象get the server connection objectdb.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pairdb.getName() 返回当操作数据库的名称db.getPrevError() 返回上一个错误对象db.getProfilingLevel() ?什么等级db.getReplicationInfo() ?什么信息db.getSisterDB(name) get the db at the same server as this onewdb.killOp() 停止(杀死)在当前库的当前操作db.printCollectionStats() 返回当前库的数据集状态db.printReplicationInfo()db.printSlaveReplicationInfo()db.printShardingStatus() 返回当前数据库是否为共享数据库db.removeUser(username) 删除用户db.repairDatabase() 修复当前数据库db.resetError()db.runCommand(cmdObj) run a database command. if cmdObj is a string, turns it into {cmdObj:1}db.setProfilingLevel(level) 0=off,1=slow,2=alldb.shutdownServer() 关闭当前服务程序db.version() 返回当前程序的版本信息数据集(表)操作语法db.linlin.find({id:10}) 返回linlin数据集ID=10的数据集db.linlin.find({id:10}).count() 返回linlin数据集ID=10的数据总数db.linlin.find({id:10}).limit(2) 返回linlin数据集ID=10的数据集从第二条开始的数据集db.linlin.find({id:10}).skip(8) 返回linlin数据集ID=10的数据集从0到第八条的数据集db.linlin.find({id:10}).limit(2).skip(8) 返回linlin数据集ID=1=的数据集从第二条到第八条的数据db.linlin.find({id:10}).sort() 返回linlin数据集ID=10的排序数据集db.linlin.findOne([query]) 返回符合条件的一条数据db.linlin.getDB() 返回此数据集所属的数据库名称db.linlin.getIndexes() 返回些数据集的索引信息db.linlin.group({key:...,initial:...,reduce:...[,cond:...]})db.linlin.mapReduce(mayFunction,reduceFunction,<optional params>)db.linlin.remove(query) 在数据集中删除一条数据db.linlin.renameCollection(newName) 重命名些数据集名称db.linlin.save(obj) 往数据集中插入一条数据db.linlin.stats() 返回此数据集的状态db.linlin.storageSize() 返回此数据集的存储大小db.linlin.totalIndexSize() 返回此数据集的索引文件大小db.linlin.totalSize() 返回些数据集的总大小db.linlin.update(query,object[,upsert_bool]) 在此数据集中更新一条数据db.linlin.validate() 验证此数据集db.linlin.getShardVersion() 返回数据集共享版本号

注:关于MySQL到MongoDB简易对照表的深入分析的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!