基于MySQL到MongoDB简易对照表的详解
2023-06-13 09:15:00 时间
MySQL:
Mongo:
db.user.find()
MySQL:
SELECT*FROMuserWHEREname="starlee"
Mongo:
db.user.find({‘name":"starlee"})
MySQL:
Mongo:
db.user.insert({‘name":"starlee",‘age":25})
如果你想在MySQL里添加一个字段,你必须:
ALTERTABLEuser….
但在MongoDB里你只需要:
db.user.insert({‘name":"starlee",‘age":25,‘email":"starlee@starlee.com"})
MySQL:
Mongo:
db.user.remove({})
MySQL:
DELETEFROMuserWHEREage<30
Mongo:
db.user.remove({‘age":{$lt:30}})
$gt:>;$gte:>=;$lt:<;$lte:<=;$ne:!=
MySQL:
Mongo:
db.user.update({‘name":"starlee"},{$set:{‘age":36}})
MySQL:
UPDATEuserSET`age`=`age`+3WHERE`name`="starlee"
Mongo:
db.user.update({‘name":"starlee"},{$inc:{‘age":3}})
MySQL:
SELECTCOUNT(*)FROMuserWHERE`name`="starlee"
Mongo:
db.user.find({‘name":"starlee"}).count()
MySQL:
SELECT*FROMuserlimit10,20
Mongo:
db.user.find().skip(10).limit(20)
MySQL:
SELECT*FROMuserWHERE`age`IN(25,35,45)
Mongo:
db.user.find({‘age":{$in:[25,35,45]}})
MySQL:
SELECT*FROMuserORDERBYageDESC
Mongo:
db.user.find().sort({‘age":-1})
MySQL:
SELECTDISTINCT(name)FROMuserWHEREage>20
Mongo:
db.user.distinct(‘name",{‘age":{$lt:20}})
MySQL:
SELECTname,sum(marks)FROMuserGROUPBYname
Mongo:
db.user.group({
key:{‘name":true},
cond:{‘name":‘foo"},
reduce:function(obj,prev){prev.msum+=obj.marks;},
initial:{msum:0}
});
MySQL:
SELECTnameFROMuserWHEREage<20
Mongo:
db.user.find(‘this.age<20′,{name:1})
发现很多人在搜MongoDB循环插入数据,下面把MongoDB循环插入数据的方法添加在下面:
for(vari=0;i<100;i++)db.test.insert({uid:i,uname:"nosqlfan"+i});
{“_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″}
CREATETABLEUSERS(aNumber,bNumber) implicit;canbedoneexplicitly
INSERTINTOUSERSVALUES(1,1) db.users.insert({a:1,b:1})
SELECTa,bFROMusers db.users.find({},{a:1,b:1})
SELECT*FROMusers db.users.find()
SELECT*FROMusersWHEREage=33 db.users.find({age:33})
SELECTa,bFROMusersWHEREage=33 db.users.find({age:33},{a:1,b:1})
SELECT*FROMusersWHEREage=33ORDERBYname db.users.find({age:33}).sort({name:1})
SELECT*FROMusersWHEREage>33 db.users.find({"age":{$gt:33}})})
SELECT*FROMusersWHEREage<33 db.users.find({"age":{$lt:33}})})
SELECT*FROMusersWHEREnameLIKE"%Joe%" db.users.find({name:/Joe/})
SELECT*FROMusersWHEREnameLIKE"Joe%" db.users.find({name:/^Joe/})
SELECT*FROMusersWHEREage>33ANDage<=40 db.users.find({"age":{$gt:33,$lte:40}})})
SELECT*FROMusersORDERBYnameDESC db.users.find().sort({name:-1})
CREATEINDEXmyindexnameONusers(name) db.users.ensureIndex({name:1})
CREATEINDEXmyindexnameONusers(name,tsDESC) db.users.ensureIndex({name:1,ts:-1})
SELECT*FROMusersWHEREa=1andb="q" db.users.find({a:1,b:"q"})
SELECT*FROMusersLIMIT10SKIP20 db.users.find().limit(10).skip(20)
SELECT*FROMusersWHEREa=1orb=2 db.users.find({$or:[{a:1},{b:2}]})
SELECT*FROMusersLIMIT1 db.users.findOne()
EXPLAINSELECT*FROMusersWHEREz=3 db.users.find({z:3}).explain()
SELECTDISTINCTlast_nameFROMusers db.users.distinct("last_name")
SELECTCOUNT(*y)FROMusers db.users.count()
SELECTCOUNT(*y)FROMuserswhereAGE>30 db.users.find({age:{"$gt":30}}).count()
SELECTCOUNT(AGE)fromusers db.users.find({age:{"$exists":true}}).count()
UPDATEusersSETa=1WHEREb="q" db.users.update({b:"q"},{$set:{a:1}},false,true)
UPDATEusersSETa=a+2WHEREb="q" db.users.update({b:"q"},{$inc:{a:2}},false,true)
DELETEFROMusersWHEREz="abc" db.users.remove({z:"abc"});
###################################################
(1)$gt>(大于)
(2)$lt <(小于)
(3)$gte >=(大于等于)
(4)$lt <=(小于等于)
(5)$ne !=(不等于)
(6)$in in(包含)
(7)$nin notin(不包含)
(8)$exists exist(字段是否存在)
(9)$inc 对一个数字字段field增加value
(10)$set 就是相当于sql的setfield=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来删除两条。mongodb1.1及以后的版本才可以用
(16)$pull 从数组field内删除一个等于value值
(17)$pullAll 同$pull,可以一次删除数组内的多个值
(18)$操作符 是他自己的意思,代表按条件找出的数组里面某项他自己。这个比较坳口,就不说了。
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();
那么我想大家这时一定会想到我想对这一个列表排序呢,noproblemmongodb会为您全心全意服务
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}})
数据库操作语法
db.AddUser(username,password)添加用户
db.auth(usrename,password)设置数据库连接验证
db.cloneDataBase(fromhost)从目标服务器克隆一个数据库
db.commandHelp(name)returnsthehelpforthecommand
db.copyDatabase(fromdb,todb,fromhost)复制数据库fromdb---源数据库名称,todb---目标数据库名称,fromhost---源数据库服务器地址
db.createCollection(name,{size:3333,capped:333,max:88888})创建一个数据集,相当于一个表
db.currentOp()取消当前库的当前操作
db.dropDataBase()删除当前数据库
db.eval(func,args)runcodeserver-side
db.getCollection(cname)取得一个数据集合,同用法:db["cname"]ordb.cname
db.getCollenctionNames()取得所有数据集合的名称列表
db.getLastError()返回最后一个错误的提示消息
db.getLastErrorObj()返回最后一个错误的对象
db.getMongo()取得当前服务器的连接对象gettheserverconnectionobject
db.getMondo().setSlaveOk()allowthisconnectiontoreadfromthennonmastermembrofareplicapair
db.getName()返回当操作数据库的名称
db.getPrevError()返回上一个错误对象
db.getProfilingLevel()?什么等级
db.getReplicationInfo()?什么信息
db.getSisterDB(name)getthedbatthesameserverasthisonew
db.killOp()停止(杀死)在当前库的当前操作
db.printCollectionStats()返回当前库的数据集状态
db.printReplicationInfo()
db.printSlaveReplicationInfo()
db.printShardingStatus()返回当前数据库是否为共享数据库
db.removeUser(username)删除用户
db.repairDatabase()修复当前数据库
db.resetError()
db.runCommand(cmdObj)runadatabasecommand.ifcmdObjisastring,turnsitinto{cmdObj:1}
db.setProfilingLevel(level)0=off,1=slow,2=all
db.shutdownServer()关闭当前服务程序
db.version()返回当前程序的版本信息
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,<optionalparams>)
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错误之_ERROR! MySQL server PID file could not be found!详解数据库
- 深入浅出XAMPP配置MySQL(xampp配置mysql)
- 如何查询MySQL用户名密码(查询mysql用户名密码)
- MySQL中的并运算符的使用方法(mysql并运算符)
- MySQL 数据库查看方法:详解浏览数据库的步骤(mysql怎么浏览数据库)
- Mysql索引命中率优化方案研究(mysql索引命中率)
- Importing XML files into MySQL: The Complete Guide for Data Integration(xml文件导入mysql)
- MySQL 主键设置详解及操作指南(mysql怎么设置主键)
- MySQL检查表是否损坏的方法和步骤(mysql检查表是否损坏)
- MySQL表结构修改操作详解(mysql中修改表的结构)
- MySQL中Offset的作用及用法详解(mysql中offset)
- MySQL中的myini配置文件详解(mysql中my.ini)
- MySQL中FK的作用及使用方法详解(mysql中fk)
- MySQL新表合并方法详解(mysql两表合并新表)
- CDH集群上使用MySQL驱动包的指南(cdh mysql驱动包)
- MySQL锁定机制详解共享锁排它锁和行级锁(mysql三种锁定机制)
- Mysql架构解析一主多从技术实现详解(mysql一主最多几从)
- MySQL查询优化技巧提高SQL查询效率的秘诀详解(mysql――query)
- MySQL 回车难题,一键解决小技巧(mysql不能回车)