기존 T-SQL을 사용하던 사람은 몽고DB의 JSON(BSON) 스타일 쿼리를 만드는데 많이 어려움이 있다. 아래의 매핑 차트를 활용하여 쿼리 규칙을 정의한다.
http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart
T-SQL과 비교
MySQL term | Mongo term |
---|---|
database | database |
table | collection |
index | index |
row | BSON document |
column | BSON field |
join | embedding and linking |
primary key | _id field |
SQL Statement | Mongo Statement |
---|---|
CREATE TABLE USERS (a Number, b Number) |
implicit; can also be done explicitly withdb.createCollection("mycoll") |
ALTER TABLE users ADD ... |
implicit |
INSERT INTO USERS VALUES(3,5) |
db.users.insert({a:3,b:5}) |
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.findt.find({age:{$ne:4}}) |
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}) |
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() |
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() |
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}) |
EXPLAIN SELECT * FROM users WHERE z=3 |
db.users.find({z:3}).explain() |
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'}); |
'Etc' 카테고리의 다른 글
몽고DB 책 소개 (0) | 2012.02.17 |
---|---|
몽고DB 어드민 관리툴 (1) | 2011.08.18 |
몽고DB와 MSSQL2008 INSERT 속도 테스트 (5) | 2011.08.05 |
Index Rebuild 스터디 발표 내용^^ (0) | 2011.08.02 |
exception in initAndListen std::exception: old lock file, terminating (0) | 2011.08.01 |