一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

基于MySQL到MongoDB簡易對照表的詳解

查詢:
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'});
###################################################
一、操作符
操作符相信大家肯定都知道了,就是等于、大于、小于、不等于、大于等于、小于等于,但是在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 --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() 返回數據集共享版本號

php技術基于MySQL到MongoDB簡易對照表的詳解,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 青春草久久 | 涩涩在线视频 | 亚洲福利视频一区二区 | 成人激情综合网 | 深爱婷婷网| 激情丁香网 | 青草社区视频 | 国产在线视频二区 | 亚洲成人综合网站 | 亚洲网站视频在线观看 | 中文字幕1区2区 | 九九综合 | 欧美人体大胆做受 | 欧美精品v国产精品v日韩精品 | 欧美色视频在线 | 精品性久久| 91精品日韩| 午夜理伦三级理论6080 | 日本成人免费网站 | 免费看美女毛片 | 成人久久精品 | 国产一区二区三区久久精品 | 精品福利国产 | 免费国产怡红院在线观看 | 国产小视频在线 | 欧美日韩免费大片 | 美女被男人扒开下面无遮无挡 | 99久久精品国产亚洲 | 99ri精品| 午夜视频在线观看国产 | 精品福利视频一区二区三区 | 青青草国产免费国产是公开 | 国产精品第一页在线 | 欧美中文字幕一二三四区 | 在线精品视频免费观看 | 亚洲综合久久久 | 伊人色综合久久 | 97成人在线观看 | 国产精品久久久久久福利69堂 | 四虎国产精品视频免费看 | 亚洲图色网站 |