mongodb语法

来源:互联网 发布:mysql忘记密码怎么办 编辑:程序博客网 时间:2024/05/16 10:24
查询: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″ }
数据库操作语法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()                  返回数据集共享版本号  db.linlin.find({'name':'foobar'})    select * from linlin where name='foobar'db.linlin.find()                     select * from linlindb.linlin.find({'ID':10}).count()    select count(*) from linlin where ID=10db.linlin.find().skip(10).limit(20)  从查询结果的第十条开始读20条数据  select * from linlin limit 10,20  ----------mysqldb.linlin.find({'ID':{$in:[25,35,45]}})  select * from linlin where ID in (25,35,45)db.linlin.find().sort({'ID':-1})      select * from linlin order by ID descdb.linlin.distinct('name',{'ID':{$lt:20}})   select distinct(name) from linlin where ID<20 db.linlin.group({key:{'name':true},cond:{'name':'foo'},reduce:function(obj,prev){prev.msum+=obj.marks;},initial:{msum:0}})select name,sum(marks) from linlin group by namedb.linlin.find('this.ID<20',{name:1})     select name from linlin where ID<20  db.linlin.insert({'name':'foobar','age':25})  insert into linlin ('name','age') values('foobar',25)db.linlin.insert({'name':'foobar','age':25,'email':'cclove2@163.com'})  db.linlin.remove({})                   delete * from linlindb.linlin.remove({'age':20})           delete linlin where age=20db.linlin.remove({'age':{$lt:20}})     delete linlin where age<20db.linlin.remove({'age':{$lte:20}})    delete linlin where age<=20db.linlin.remove({'age':{$gt:20}})     delete linlin where age>20db.linlin.remove({'age':{$gte:20}})    delete linlin where age>=20db.linlin.remove({'age':{$ne:20}})     delete linlin where age!=20  db.linlin.update({'name':'foobar'},{$set:{'age':36}})  update linlin set age=36 where name='foobar'db.linlin.update({'name':'foobar'},{$inc:{'age':3}})   update linlin set age=age+3 where name='foobar'
MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表 查询的问题。MongoDB对数据的操作很丰富,下面做一些举例说明,内容大部分来自官方文档,另外有部分为自己理解。查询colls所有数据db.colls.find() //select * from colls通过指定条件查询db.colls.find({'last_name': 'Smith'});//select * from colls where last_name='Smith'指定多条件查询db.colls.find( { x : 3, y : "foo" } );//select * from colls where x=3 and y='foo'指定条件范围查询db.colls.find({j: {$ne: 3}, k: {$gt: 10} });//select * from colls where j!=3 and k>10查询不包括某内容db.colls.find({}, {a:0});//查询除a为0外的所有数据支持<, <=, >, >=查询,需用符号替代分别为$lt,$lte,$gt,$gtedb.colls.find({ "field" : { $gt: value } } );  db.colls.find({ "field" : { $lt: value } } );  db.colls.find({ "field" : { $gte: value } } ); db.colls.find({ "field" : { $lte: value } } );也可对某一字段做范围查询db.colls.find({ "field" : { $gt: value1, $lt: value2 } } );不等于查询用字符$nedb.colls.find( { x : { $ne : 3 } } );in查询用字符$indb.colls.find( { "field" : { $in : array } } );db.colls.find({j:{$in: [2,4,6]}});not in查询用字符$nindb.colls.find({j:{$nin: [2,4,6]}});取模查询用字符$moddb.colls.find( { a : { $mod : [ 10 , 1 ] } } )// where a % 10 == 1$all查询db.colls.find( { a: { $all: [ 2, 3 ] } } );//指定a满足数组中任意值时$size查询db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录$exists查询db.colls.find( { a : { $exists : true } } ); // 存在a对象的数据db.colls.find( { a : { $exists : false } } ); // 不存在a对象的数据$type查询$type值为bsonhttp://bsonspec.org/数 据的类型值db.colls.find( { a : { $type : 2 } } ); // 匹配a为string类型数据db.colls.find( { a : { $type : 16 } } ); // 匹配a为int类型数据使用正则表达式匹配db.colls.find( { name : /acme.*corp/i } );//类似于SQL中like内嵌对象查询db.colls.find( { "author.name" : "joe" } );1.3.3版本及更高版本包含$not查询db.colls.find( { name : { $not : /acme.*corp/i } } );db.colls.find( { a : { $not : { $mod : [ 10 , 1 ] } } } );sort()排序db.colls.find().sort( { ts : -1 } );//1为升序2为降序limit()对限制查询数据返回个数db.colls.find().limit(10)skip()跳过某些数据db.colls.find().skip(10)snapshot()快照保证没有重复数据返回或对象丢失count()统计查询对象个数db.students.find({'address.state' : 'CA'}).count();//效率较高db.students.find({'address.state' : 'CA'}).toArray().length;//效率很低group()对查询结果分组和SQL中group by函数类似distinct()返回不重复值


0 0
原创粉丝点击