{"id":22985052,"url":"https://github.com/hhejo/nosql-mongodb","last_synced_at":"2025-04-02T10:46:06.499Z","repository":{"id":254765920,"uuid":"847473866","full_name":"hhejo/nosql-mongodb","owner":"hhejo","description":"MongoDB study","archived":false,"fork":false,"pushed_at":"2024-09-02T23:17:34.000Z","size":2,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-08T02:11:10.904Z","etag":null,"topics":["mongodb","nosql"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hhejo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-25T23:10:18.000Z","updated_at":"2024-11-18T00:21:10.000Z","dependencies_parsed_at":"2025-02-08T02:10:45.831Z","dependency_job_id":"79946265-c657-45f5-97f7-76a3dfed1322","html_url":"https://github.com/hhejo/nosql-mongodb","commit_stats":null,"previous_names":["hhejo/nosql-mongodb"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fnosql-mongodb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fnosql-mongodb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fnosql-mongodb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhejo%2Fnosql-mongodb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hhejo","download_url":"https://codeload.github.com/hhejo/nosql-mongodb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246802610,"owners_count":20836369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mongodb","nosql"],"created_at":"2024-12-15T03:19:51.943Z","updated_at":"2025-04-02T10:46:06.474Z","avatar_url":"https://github.com/hhejo.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# NoSQL with MongoDB\n\n## 1. MongoDB\n\nMongoDB\n\n- document 기반 NoSQL 데이터베이스\n- BSON(Binary JSON) 기반의 Document로 데이터 관리\n- JSON보다 대용량 데이터 처리 시 유용\n- BSON: 이진 형식으로 데이터를 빠르게 스캔하고 처리\n- JSON 데이터를 0과 1 형식으로 변환해 내부에서 저장하면 성능상 이점이 있음\n\nMongoDB 데이터 구조\n\n- Database\n- Collection (Table)\n- Document (Record)\n\n## 2. 기본 명령\n\n```\nshow dbs;\nuse dbName;\nshow collections;\ndb.collectionName.funcName();\ndb.status();\ndb.dropdatabase();\ndb.collectionName.drop();\ndb.createCollection(name, options);\ndb.collectionName.renameCollection(newCollectionName);\n```\n\n```\ndb.createCollection(name, options);\ndb.collectionName.isCapped();\ndb.createCollection('log', { capped: true, size: 5242880, max: 5000 });\n```\n\n- `capped`: true로 설정할 시 고정된 크기를 가진 capped 컬렉션을 생성. 그 크기가 꽉 차면 가장 오래된 데이터부터 자동으로 삭제 (기본값은 false)\n- `autoIndexId`: true로 설정할 시 `_id` 필드에 대한 인덱스를 자동으로 생성 (기본값은 false)\n- `size`: capped 컬렉션의 최대 바이트 크기를 지정 (capped가 true일 때만 사용)\n- `max`: capped 컬렉션에 저장할 수 있는 문서의 최대 개수를 지정\n\n## 3. 주요 데이터 타입\n\n- String\n- Integer\n- Boolean\n- Double\n- Arrays\n- Object\n- Null\n- ObjectId\n- Date\n\n## 4. CRUD\n\n### 1. Insert\n\n- `insertOne()`\n- `insertMany()`\n\n```\ndb.users.insertOne({ name: '', age: 10, addr: '' });\ndb.users.insertMany([\n{ name: '', age: 10, addr: '' },\n{ name: '', age: 20, addr: '' },\n]);\n```\n\n### 2. Find\n\n- `findOne()`\n- `find()`\n\n```\ndb.users.find(\n  { age: { $gt:18 } },\n  { name: 1, address: 1 }\n).limit(5);\n```\n\n비교 문법\n\n- `$eq`: =\n- `$ne`: !=\n- `$gt`: \u003e\n- `$gte`: \u003e=\n- `$lt`: \u003c\n- `$lte`: \u003c=\n- `$in`: 값이 배열에 포함됨\n- `$nin`: 값이 배열에 포함되지 않음\n\n논리 연산 문법\n\n- `$or`\n- `$and`\n- `$not`\n\n```\ndb.users.find({ age: 10, addr: 'seoul' });\ndb.users.find({ $and: [{ age: 10 }, { addr: 'seoul' }] });\n```\n\n정규표현식\n\n- `$regex`\n\n```\ndb.users.find({ name: /Kim/ });\ndb.users.find({ name: { $regex: /Kim/ } });\n```\n\n정렬\n\n- `sort()`\n\n```\ndb.users.find().sort({ age: 1 });\ndb.users.find().sort({ age: -1 });\n```\n\n카운트\n\n- `count()`\n\n```\ndb.users.find().count();\n```\n\n필드 존재 여부로 카운트\n\n- `$exists`\n\n```\ndb.users.find({ addr: { $exists: true } });\n```\n\n중복 제거\n\n- `distinct()`\n\n```\ndb.users.distinct('addr');\n```\n\n제한\n\n- `limit()`\n\n```\ndb.users.find().limit(5);\n```\n\n조건\n\n```\ndb.users.find({ addr: { $all: ['seoul', 'busan'] } }); // 모두 맞아야 조회\ndb.users.find({ addr: { $in: ['seoul', 'busan'] } }); // 하나라도 맞으면 조회\ndb.users.find({ addr: { $nin: ['seoul', 'busan'] } }); // 어떤 것도 안 맞으면 조회\n```\n\n### 3. Update\n\n- `updateOne()`\n- `updateMany()`\n\n```\ndb.users.updateMany(\n  { age: { $gt: 10 } },\n  { $set: { addr: 'busan' } }\n);\ndb.users.updateMany(\n  { addr: { $eq: 'seoul' } },\n  { $inc: { age: 2 } }\n);\n```\n\n### 4. Delete\n\n- `deleteOne()`\n- `deleteMany()`\n\n```\ndb.users.deleteOne();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhejo%2Fnosql-mongodb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhhejo%2Fnosql-mongodb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhhejo%2Fnosql-mongodb/lists"}