从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’ : ’[email protected]’}) 

删除: 
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'});

猜你喜欢

转载自zhaohaolin.iteye.com/blog/1737848