mongodb 请问php中的这句mysql语法,在mongodb中如何写。

mongodb 请问php中的这句mysql语法,在mongodb中如何写。,第1张

查询:

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=0i<100i++)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) implicitcan 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 namedb.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 usersdb.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) $inin (包含)

(7) $ninnot in (不包含)

(8) $existsexist (字段是否存在) 

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

db.AddUser(username,password) 添加用户

db.auth(usrename,password) 设置数据库连接验证

db.cloneDataBase(fromhost) 从目标服务器克隆一个数据库

db.commandHelp(name) returns the help for the command

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) run code server-side

db.getCollection(cname) 取得一个数据集合,同用法:db['cname'] or db.cname

db.getCollenctionNames() 取得所有数据集合的名称列表

db.getLastError() 返回最后一个错误的提示消息

db.getLastErrorObj() 返回最后一个错误的对象

db.getMongo() 取得当前服务器的连接对象get the server connection object

db.getMondo().setSlaveOk() allow this connection to read from then nonmaster membr of a replica pair

db.getName() 返回当 *** 作数据库的名称

db.getPrevError() 返回上一个错误对象

db.getProfilingLevel() ?什么等级

db.getReplicationInfo() ?什么信息

db.getSisterDB(name) get the db at the same server as this onew

db.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=all

db.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() 返回数据集共享版本号

用 set 方法试试

db.users.update({"city" : 453},{"$set" : {"user_sex" : 1, "is_vip":1, ..............}})

mongodb的结构与关系型数据库不同,它类似树状结构,可以很方便对每个分支进行 *** 作,但它没有像mysql那样insert(value、value、value...)那样的语法,也不支持transaction

所以mongodb不能批量插入数据,如果你要批量插入数据,可以在mongodb里写一个循环,它支持for等语法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11364745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存