상세 컨텐츠

본문 제목

[MongoDB] MongoDB Terms, query corresponding to SQL

PROGRAMMING/Database

by koharin 2022. 1. 19. 19:38

본문

728x90
반응형

Terms

Collection

  • MongoDB document의 집합
  • RDBMS 테이블과 동일하다.
  • 하나의 데이터베이스에 collection이 존재하고, collection은 schema를 강요하지 않아 하나의 collection 내 document는 다른 필드들을 가질 수 있다.
  • Collection은 따로 생성하지 않아도 된다. Document를 넣으면 자동으로 생성된다.

_id

  • 모든 MongoDB document에 필수적인 필드
  • _id 필드는 유일한 값을 갖는다.
  • _id 필드 == primary key

BSON

  • document를 저장하는데 사용되는 직렬화 포맷

cardinality

  • 값을 집합에서 요소의 개수
  • 집합 A = {2,4,6}은 3개의 요소를 포함하므로, cardinality는 3이다.

CRUD

driver

  • MongoDB와 통시하는 client library

mongod

  • MongoDB database server
  • mongod 프로세스는 MongoDB server를 daemon으로서 실행한다.
  • MongoDB 서버는 데이터 요청과 포맷을 관리하고 연산을 관리한다.

mongos

  • mongos 프로세스는 MongoDB router를 daemon으로 실행한다.

mongosh

  • MongoDB Shell
  • MongoDB v5.0부터, mongo를 대체해서 mongo shell로 사용

namespace

  • MongoDB에서 collection이나 index의 정식 이름
  • [database-name].[collection-or-index-name]과 같이 database name과 collection 또는 index 이름의 조합으로 namespace를 나타낸다.
  • 모든 document는 하나의 namespace에 속한다.

ObjectId

  • collection의 uniqueness를 보장하는 12byte BSON 타입
  • ObjectId는 timestamp, machine ID, process ID, process local incremental counter를 기반으로 만들어진다.
  • _id 필드는 ObjectId 값을 디폴트 값으로 가진다.

primary key

  • record의 고유한 변경할 수 없는 식별자
  • MongoDB에서 _id 필드가 일반적으로 BSON ObjectId 값을 가지는 document의 primary key이다.

query

  • $ 로 시작하는 query operator를 사용해서 요청을 읽을 수 있다.

 

 

Term corresponding to SQL

SQL Terms/Concepts MongoDB Terms/Concepts
database database
table collection
row document or BSON document
column field
index index
table joins $lookup, embedded documents
primary key primary key == _id 필드
SELECT INTO NEW_TABLE $out
MERGE INTO TABLE $merge
UNION ALL $unionWith
CREATE TABLE table_name db.<collection_name>.insertOne()
db.<collection_name>.insertMany()
db.createCollection(”collection_name”)
DROP TABLE table_name db.<collection_name>.drop()
CREATE INDEX ~ ON table_name(index, index) db.<collection_name>.createIndex({})
INSERT INTO ~ VALUES ~ db.<collection_name>.insertOne({})
SELECT * FROM table_name db.<collection_name>.find()
SELECT id, field2, field3 FROM table_name db.<collection_name>.find({}, {field1: 1, field2: 1 })
SELECT user_id, status FROM peaple db.collection.find({}, {user_id:1, status: 1, _id:0})
SELECT * FROM peaple WHERE status=”A” db.peaple.find({ status:”A” })
SELECT user_id, status
FROM peaple
WHERE status = “A”
db.peaple.find(
{ status: “A” },
{user_id: 1, status: 1, _id: 0 }
)
SELECT COUNT(*)
FROM peaple
db.peaple.count()
SELECT *
FROM peaple
WHERE status = “A”
ORDER BY user_id DESC
db.peaple.find( { status: “A” }).sort( {user_id: -1 } )
SELECT *
FROM peaple
LIMIT 1
db.peaple.findOne()
or
db.peale.find().limit(1)
SELECT COUNT(*) FROM peaple WHERE age > 30 db.peaple.count( { age: { $gt: 30 } } )
UPDATE peaple SET status = “C” WHERE age > 25 db.peaple.updateMany( { age: { $gt: 25 } }, { $set: { status: “C” } } )
UPDATE peaple SET age = age + 3 WHERE status = “A” db.peaple.updateMany( { status: “A” }, { $inc: { age: 3 } } )
DELETE FROM peaple WHERE status = “D” db.peaple.deleteMany( { status: “D” } )

 

728x90
반응형

관련글 더보기