MongoDB 의 SQL 대응
먼저 관계 데이터베이스 에서 자주 사용 하 는 개념 대비 MongoDB 에서 이에 대응 하 는 개념 을 소개 한다.
Oracle MongoDB
DataBase DataBase
테이블 (표) 컬 렉 션 (집합)
인덱스 인덱스
row (한 줄 기록) BSON (JSON 형식 과 유사) http://bsonspec.org/
열 (열, 필드) BSON 필드
join (연결) embedding and linking (끼 워 넣 기 및 연결)
primary key (주 키) _id field (ID 식별 자)
그룹 별 (그룹 별) aggregation (집합)
사실 MongoDB 를 공부 하 는 과정 에서 우 리 는 패턴 을 잊 고 '키 쌍' 을 기억 하면 된다.
몽고 DB 조 회 는 JSON (BSON) 대상 을 통 해 이 뤄 진다.다음은 SQL 과 MonggoDB 의 검색 문법 을 비교 하여 보 여 드 리 겠 습 니 다.
SQL 구문 MongoDB 구문
Create table users(a int,b int) Collection, MongoDB , :
Collection: db.createCollection("users", { capped:true, size:100000}) // capped: size:
Alter table users……… 패턴 자유
inert into users value(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.find({age:{$ne: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})
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 order_id from orders o, order_line_items li where li.order_id=o.order_id and li.sku=12345
db.orders.find({"items.sku":12345},{_id:1})
select customer.name from customers,orders where orders.id="q179" and orders.custid=customer.id
var o = db.orders.findOne({_id:"q179"}); var name = db.customers.findOne({_id:o.custid})
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'});
더 많은 것 을 보십시오: http://api.mongodb.org/wiki/current/SQL%20to%20Aggregation%20Framework%20Mapping%20Chart.html
이것들 은 모두 자주 사용 하 는 SQL 문 구 니 당연히 이것들 을 파악 하면 뒤의 개발 에 충분 하 다.
SQL Statement Mongo Query Language Statement
CREATE TABLE USERS (a Number, b Number)
Implicit or use MongoDB::createCollection().
INSERT INTO USERS VALUES(1,1)
$db->users->insert(array("a" => 1, "b" => 1));
SELECT a,b FROM users
$db->users->find(array(), array("a" => 1, "b" => 1));
SELECT * FROM users WHERE age=33
$db->users->find(array("age" => 33));
SELECT a,b FROM users WHERE age=33
$db->users->find(array("age" => 33), array("a" => 1, "b" => 1));
SELECT a,b FROM users WHERE age=33 ORDER BY name
$db->users->find(array("age" => 33), array("a" => 1, "b" => 1))->sort(array("name" => 1));
SELECT * FROM users WHERE age>33
$db->users->find(array("age" => array('$gt' => 33)));
SELECT * FROM users WHERE age<33
$db->users->find(array("age" => array('$lt' => 33)));
SELECT * FROM users WHERE name LIKE "%Joe%"
$db->users->find(array("name" => new MongoRegex("/Joe/")));
SELECT * FROM users WHERE name LIKE "Joe%"
$db->users->find(array("name" => new MongoRegex("/^Joe/")));
SELECT * FROM users WHERE age>33 AND age<=40
$db->users->find(array("age" => array('$gt' => 33, '$lte' => 40)));
SELECT * FROM users ORDER BY name DESC
$db->users->find()->sort(array("name" => -1));
CREATE INDEX myindexname ON users(name)
$db->users->ensureIndex(array("name" => 1));
CREATE INDEX myindexname ON users(name,ts DESC)
$db->users->ensureIndex(array("name" => 1, "ts" => -1));
SELECT * FROM users WHERE a=1 and b='q'
$db->users->find(array("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(array('$or' => array(array("a" => 1), array("b" => 2))));
SELECT * FROM users LIMIT 1
$db->users->find()->limit(1);
EXPLAIN SELECT * FROM users WHERE z=3
$db->users->find(array("z" => 3))->explain()
SELECT DISTINCT last_name FROM users
$db->command(array("distinct" => "users", "key" => "last_name"));
SELECT COUNT(*y) FROM users
$db->users->count();
SELECT COUNT(*y) FROM users where AGE > 30
$db->users->find(array("age" => array('$gt' => 30)))->count();
SELECT COUNT(AGE) from users
$db->users->find(array("age" => array('$exists' => true)))->count();
UPDATE users SET a=1 WHERE b='q'
$db->users->update(array("b" => "q"), array('$set' => array("a" => 1)));
UPDATE users SET a=a+2 WHERE b='q'
$db->users->update(array("b" => "q"), array('$inc' => array("a" => 2)));
DELETE FROM users WHERE z="abc"
$db->users->remove(array("z" => "abc"));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.