To create a simple "to-do" list application using Node.js and MongoDB, follow these steps:

1. Install required dependencies

First, make sure you have Node.js installed on your system. You can download it from https://nodejs.org/.

Next, create a new directory for your project and navigate to it in the terminal.

Run the following command to initialize a new Node.js project:

```
npm init -y
```

Now, install the necessary dependencies:

- Express: A web framework for Node.js.
- Mongoose: An Object Data Modeling (ODM) library for MongoDB and Node.js.
- Body-parser: Middleware to parse incoming request bodies.

Install them by running:

```
npm install express mongoose body-parser
```

2. Set up the server

Create a new file called `app.js` in your project folder and add the following code:

```javascript
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

const app = express();

// Connect to MongoDB
mongoose.connect('mongodb://localhost/todo', { useNewUrlParser: true, useUnifiedTopology: true });

// Use body-parser middleware
app.use(bodyParser.json());

// Import routes
const todoRoutes = require('./routes/todo');
app.use('/todos', todoRoutes);

// Start the server
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
```

3. Create the schema and model

In your project folder, create a new folder called `models`. Inside this folder, create a new file called `todo.js` with the following content:

```javascript
const mongoose = require('mongoose');

const TodoSchema = new mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  completed: {
    type: Boolean,
    default: false
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model('Todo', TodoSchema);
```

4. Create the routes

In your project folder, create a new folder called `routes`. Inside this folder, create a new file called `todo.js` with the following content:

```javascript
const express = require('express');
const router = express.Router();
const Todo = require('../models/todo');

// Get all todos
router.get('/', async (req, res) => {
  try {
    const todos = await Todo.find();
    res.json(todos);
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

// Add a todo
router.post('/', async (req, res) => {
  const todo = new Todo({
    title: req.body.title
  });

  try {
    const newTodo = await todo.save();
    res.status(201).json(newTodo);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// Update a todo
router.patch('/:id', getTodo, async (req, res) => {
  if (req.body.title != null) {
    res.todo.title = req.body.title;
  }

  if (req.body.completed != null) {
    res.todo.completed = req.body.completed;
  }

  try {
    const updatedTodo = await res.todo.save();
    res.json(updatedTodo);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// Delete a todo
router.delete('/:id', getTodo, async (req, res) => {
  try {
    await res.todo.remove();
    res.json({ message: 'Deleted Todo' });
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

// Middleware to get a todo by ID
async function getTodo(req, res, next) {
  let todo;
  try {
    todo = await Todo.findById(req.params.id);
    if (todo == null) {
      return res.status(404).json({ message: 'Cannot find todo' });
    }
  } catch (err) {
    return res.status(500).json({ message: err.message });
  }

  res.todo = todo;
  next();
}

module.exports = router;
```

5. Run the application

Make sure you have MongoDB installed and running on your system.

Start your Node.js server by running:

```
node app.js
```

Now, you can use tools like Postman or curl to test your API endpoints for creating, reading, updating, and deleting "to-do" list items.

For example, to create a new "to-do" item, send a POST request with JSON data to `http://localhost:3000/todos`:

```json
{
  "title": "Buy groceries"
}
```

To fetch all "to-do" items, send a GET request to `http://localhost:3000/todos`.

To update an existing "to-do" item, send a PATCH request with JSON data to `http://localhost:3000/todos/:id`, where `:id` is the ID of the item:

```json
{
  "completed": true
}
```

To delete a "to-do" item, send a DELETE request to `http://localhost:3000/todos/:id`, where `:id` is the ID of the item.
Node.js와 MongoDB를 사용하여 간단한 "할 일" 목록 애플리케이션을 만들려면 다음 단계를 따르세요.

1. 필수 종속성 설치

먼저, 시스템에 Node.js가 설치되어 있는지 확인합니다. https://nodejs.org/ 에서 다운로드할 수 있습니다.

다음, 프로젝트의 새 디렉터리를 생성하고 터미널에서 해당 디렉토리로 이동합니다.

다음 명령을 실행하여 새 Node.js 프로젝트를 초기화합니다:

```
npm init -y
```

이제 필요한 종속성을 설치합니다:

- Express: A web framework for Node.js.
- Mongoose: An Object Data Modeling (ODM) library for MongoDB and Node.js.
- Body-parser: Middleware to parse incoming request bodies.

실행하여 설치합니다:

```
npm install express mongoose body-parser
```

2. 서버 설정

프로젝트 폴더에 `app.js`라는 새 파일을 생성하고 다음 코드를 추가합니다:

```javascript
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

const app = express();

// Connect to MongoDB
mongoose.connect('mongodb://localhost/todo', { useNewUrlParser: true, useUnifiedTopology: true });

// Use body-parser middleware
app.use(bodyParser.json());

// Import routes
const todoRoutes = require('./routes/todo');
app.use('/todos', todoRoutes);

// Start the server
const port = process.env.PORT || 3000;
app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});
```

3. 스키마 및 모델 생성

프로젝트 폴더에 'models'라는 새 폴더를 만듭니다. 이 폴더 안에 다음 내용으로 `todo.js`라는 새 파일을 만듭니다:

```javascript
const mongoose = require('mongoose');

const TodoSchema = new mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  completed: {
    type: Boolean,
    default: false
  },
  createdAt: {
    type: Date,
    default: Date.now
  }
});

module.exports = mongoose.model('Todo', TodoSchema);
```

4. 경로 만들기

프로젝트 폴더에 `routes`라는 새 폴더를 만듭니다. 이 폴더 안에 다음 내용으로 `todo.js`라는 새 파일을 만듭니다:

```javascript
const express = require('express');
const router = express.Router();
const Todo = require('../models/todo');

// Get all todos
router.get('/', async (req, res) => {
  try {
    const todos = await Todo.find();
    res.json(todos);
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

// Add a todo
router.post('/', async (req, res) => {
  const todo = new Todo({
    title: req.body.title
  });

  try {
    const newTodo = await todo.save();
    res.status(201).json(newTodo);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// Update a todo
router.patch('/:id', getTodo, async (req, res) => {
  if (req.body.title != null) {
    res.todo.title = req.body.title;
  }

  if (req.body.completed != null) {
    res.todo.completed = req.body.completed;
  }

  try {
    const updatedTodo = await res.todo.save();
    res.json(updatedTodo);
  } catch (err) {
    res.status(400).json({ message: err.message });
  }
});

// Delete a todo
router.delete('/:id', getTodo, async (req, res) => {
  try {
    await res.todo.remove();
    res.json({ message: 'Deleted Todo' });
  } catch (err) {
    res.status(500).json({ message: err.message });
  }
});

// Middleware to get a todo by ID
async function getTodo(req, res, next) {
  let todo;
  try {
    todo = await Todo.findById(req.params.id);
    if (todo == null) {
      return res.status(404).json({ message: 'Cannot find todo' });
    }
  } catch (err) {
    return res.status(500).json({ message: err.message });
  }

  res.todo = todo;
  next();
}

module.exports = router;
```

5. 애플리케이션 실행

시스템에 MongoDB가 설치되어 실행 중인지 확인합니다.

응용 프로그램을 실행하여 Node.js 서버를 시작합니다:

```
node app.js
```

이제 Postman이나 curl과 같은 도구를 사용하여 "할 일" 목록 항목의 생성, 읽기, 업데이트 및 삭제에 대한 API 엔드포인트를 테스트할 수 있습니다.

예를 들어 새 "할 일" 항목을 만들려면 JSON 데이터가 포함된 POST 요청을 `http://localhost:3000/todos`으로 보내세요:

```json
{
  "title": "Buy groceries"
}
```

모든 "할 일" 항목을 가져오려면 `http://localhost:3000/todos`로 GET 요청을 보내세요.

기존 "할 일" 항목을 업데이트하려면 `http://localhost:3000/todos/:id`로 JSON 데이터가 포함된 PATCH 요청을 보내세요(여기서 `:id`는 해당 항목의 ID):

```json
{
  "completed": true
}
```

"할 일" 항목을 삭제하려면 `http://localhost:3000/todos/:id`으로 DELETE 요청을 보내세요. 여기서 `:id`는 항목의 ID입니다.