---
# System prepended metadata

title: Node.js 第一週主線任務

---

# Node.js 第一週主線任務


## 題庫
## 課程範圍

1.搜尋 name 欄位為 "Ray Xu" 的 document 列表
```
db.posts.find(
    {
    "name":"Ray Xu"
    }
)

```

 

2.新增多筆 document，請全部欄位皆填寫
```
db.posts.insertOne({
    name:"RayChen",
    tags: ["技術", "學習"],
    type: "Tech",
    image: "https://fakeimg.pl/300/",
    createdAt: new Date(),
    content: "學習React Hook UseMemo...",
    likes: 5,
    comments: 100
})

```

3.新增多筆 document，請全部欄位皆填寫
```
db.posts.insertMany([
  {
   name:"RayChen",
    tags: ["技術", "學習"],
    type: "Tech",
    image: "https://fakeimg.pl/300/",
    createdAt: new Date(),
    content: "學習React Hook UseMemo...",
    likes: 5,
    comments: 100
  },
  {
   name:"RayChen",
    tags: ["技術1", "學習1"],
    type: "Tech",
    image: "https://fakeimg.pl/300/",
    createdAt: new Date(),
    content: "學習React Hook UseMemo...",
    likes: 5,
    comments: 100
  },
  {
    name:"RayChen",
    tags: ["技術2", "學習2"],
    type: "Tech",
    image: "https://fakeimg.pl/300/",
    createdAt: new Date(),
    content: "學習React Hook UseMemo...",
    likes: 5,
    comments: 100
  }
])
```


4.修改一筆 document，filter 條件請用 _id 指定其中一筆資料，content 欄位調整為測試資料
```
db.posts.updateOne(
  {
    _id: ObjectId('663a3e5033270ca240002')
  },
  {
    $set: {
      content: "測試資料"
    }
  }
)
```


5.修改多筆 name 欄位為 "Ray Xu" 的 document 列表，content 欄位都調整為哈哈你看看你
```
db.posts.updateMany(
    {
     name:"Ray Xu"
    },
    {
        $set:{
          content:"哈哈你看看你"
        }
    }

)
```
6.刪除一筆 document，filter 條件請用 _id 任意指定其中一筆資料
```
db.posts.deleteOne(
  {
    _id: ObjectId('673a3e5033270ca24995bccc')
  }
)
```

7.刪除多筆 document，filter 條件請用 type 為 group 的值，刪除所有社團貼文
```
db.posts.deleteMany(
  {
    type: "group"
  }
)
```
8.刪除多筆 document，filter 條件為以下條件
a. name:"Ray Xu"
b. likes: 500(含) 個讚以下
```
db.posts.deleteMany(
  {
    name: "Ray Xu",
    likes: {
      $lte: 500
    }
  }
)
```
9.查詢全部 posts 的 document 列表
```
db.posts.find({})
```
10.關鍵字搜尋 name 裡面含有 o 的 document 列表
```
db.posts.find(
  {
    name: /o/
  }
)
```
11.查詢name 欄位為 "Ray Xu" ，filter 篩選出介於 500~1000(含) 個讚（大於等於 500、小於等於 1000）
```
db.posts.find(
  {
    name: "Ray Xu",
    likes: {
      $gte: 500,
      $lte: 1000
    }
  }
)
```

12.查詢 comments 有大於等於 500 以上的 document 列表
```
db.posts.find(
  {
    comments: {
      $gte: 500
    }
  }
)
```
13.查詢 tags 欄位，有 謎因 或(or) 幹話 的 document 列表
```
db.posts.find(
  {
    tags: {
      $in: ["謎因", "幹話"]
    }
  }
)
```

14.查詢 tags 欄位，有 幹話 的 document 列表，需隱藏 _id 欄位
```
db.posts.find(
  {
    tags: {
      $in: ["幹話"]
    }
  },
  {
    _id: 0
  }
)

```
15.請嘗試用 Mongo Shell 指令刪除全部 Documents
```
db.posts.deleteMany({})
```


## 自主研究題
1.posts 所有 document 數量為？(回傳數字)
```
db.posts.find().count()
```

2.請查詢 name 為 Ray Xu 的 document 列表，排序為由新到舊
```
db.posts.find(
  {
    name: "Ray Xu"
  }
).sort(
  {
    createdAt: -1
  }
)
```
3.請查詢 name 為 Ray Xu 的 document 列表，顯示前 30 筆資料
```
db.posts.find(
  {
    name: "Ray Xu"
  }
).limit(30)
```
4.請查詢 name 為 Ray Xu ，顯示100(含) 個讚以上的前 30 筆 document 列表，時間排序由新到舊
```
db.posts.find(
  {
    name: "Ray Xu",
    likes: {
      $gte: 100
    }
  }
).sort(
  {
    createdAt: -1
  }
).limit(30)
```
5.請查詢 comments 超過 100 的 document 列表，跳過前 30 筆資料，再顯示 30 筆資料
```
db.posts.find(
  {
    comments: {
      $gt: 100
    }
  }
).skip(30).limit(30)
```
6.尋找超夯熱門貼文，請查詢 likes 且(and) comments 都 1,500(含)以上的 document 列表
```
db.posts.find({
  $and: [
    {
      likes: {
        $gte: 1500
      }
    },
    {
      comments: {
        $gte: 1500
      }
    } 
  ]
})
```
7.尋找普通熱門貼文，請查詢 likes 或(or) comments ， 1,000(含)以上 的 document 列表
```
db.posts.find({
  $or: [
    {
      likes: {
        $gte: 1000
      }
    },
    {
      comments: {
        $gte: 1000
      }
    } 
  ]
})
```
8.查詢 image 欄位為 null 的 document 列表
```
db.posts.find({
  image: {
    $type: 10
  }
})

```
9.隨意找一筆 document 資料，將 tags 欄位裡的陣列，新增一個新 tags 為 遊記
```
db.posts.updateOne(
  {
    _id: ObjectId('663a3a0f33270ca24995bcb5')
  },
  {
    $push: {
      tags: "遊記"
    }
  }
)
```
10.將所有 tags 陣列裡的 感情 都移除
```

db.posts.updateMany(
  {},
  {
    $pull: {
      tags: "感情"
    }
  }
)
```