---
# System prepended metadata

title: 第一週主線任務

---

# 第一週主線任務
###### 資料欄位
```
貼文集合欄位介紹
- name：貼文姓名
- image：貼文圖片
- content：貼文內容
- likes：按讚數
- comments：留言數
- createdAt：發文時間
- type：貼文種類[friend(摯友)、group(社團)]
- tags：貼文標籤
```
---
### 課程範圍
1. 搜尋 name 欄位為 "Ray Xu" 的 document 列表
```javascript!
 db.posts.find({"name":"Ray Xu"})
```
2. 新增一筆 document，請全部欄位皆填寫
```javascript!
db.posts.insertOne({
    name:"Ching",
    image:"http://dummyimage.com/197x100.png/cc0000/ffffff",
    content:"ante vivamus tortor",
    likes: 4235,
    comments: 4562,
    createdAt:"2023-11-29 08:53:44 UTC",
    type:"friend",
    tags:["心情"]
})
```
3. 新增多筆 document，請全部欄位皆填寫
```javascript!
db.posts.insertMany([{
    name: "黑崎一護",
    image: null,
    content: "你說甚麼!!",
    likes: 556,
    comments: 965,
    createdAt: "2022-04-22 21:53:44 UTC",
    type: "friend",
    tags: ["幹話", "謎因"],
},{
    name:"艾倫",
    image:"http://dummyimage.com/197x100.png/cc0000/ffffff",
    content:"萊納你坐啊",
    likes: 7786,
    comments: 1246,
    createdAt:"2022-06-29 08:53:44 UTC",
    type:"friend",
    tags:["幹話", "謎因"]
}])

```
4. 修改一筆 document，filter 條件請用 `_id` 指定其中一筆資料，`content` 欄位調整為`測試資料`
```javascript!
db.posts.updateOne(
  {
    _id: ObjectId("662118a400198bb6c3fddd77"),
  },
  {
    $set: {
      content: "測試資料",
    },
  }
);
```
5. 修改多筆 `name` 欄位為 ``"Ray Xu"`` 的 document 列表，`content` 欄位都調整為`哈哈你看看你`
```javascript!
db.posts.updateMany(
{
    name: "Ray Xu",
},
{
    $set: {
    content: "哈哈你看看你",
    },
}
);
```
6. 刪除一筆 document，filter 條件請用 `_id` 任意指定其中一筆資料
```javascript!
db.posts.deleteOne({
  _id: ObjectId("662118a400198bb6c3fddd7b"),
});
```
7. 刪除多筆 document，filter 條件請用 `type` 為 `group` 的值，刪除所有社團貼文
```javascript!
db.posts.deleteMany({
    type: "group"
})
```
8. 刪除多筆 document，filter 條件為以下條件
    a. `name`:``"Ray Xu"``
    b. `likes`: 500(含) 個讚以下
```javascript!
db.posts.deleteMany({
    $and: [{
        name: "Ray Xu",
        likes: {$lte: 500 }
    }]
});
```
9. 查詢全部 `posts` 的 document 列表
```javascript!
db.posts.find({})
```
10. 關鍵字搜尋 `name` 裡面含有 `o` 的 document 列表
```javascript!
db.posts.find({
    name: {$in : [/o/]}
})
```
11. 查詢`name` 欄位為 `"Ray Xu"` ，filter 篩選出介於 500~1000(含) 個讚（大於等於 500、小於等於 1000）
```javascript!
db.posts.find({
  name: "Ray Xu",
  $and: [{ likes: { $gte: 500, $lte: 1000 } }]
});
```
12. 查詢 `comments` 有大於等於 500 以上的 document 列表
```javascript!
db.posts.find({
  comments: { $gte:500 }
})
```
13. 查詢 `tags` 欄位，有 `謎因` **或(or)** `幹話` 的 document 列表
```javascript!
db.posts.find({
    tags: {$in: ['謎因', '幹話']}
})
```
14. 查詢 `tags` 欄位，有 `幹話` 的 document 列表，需隱藏 `_id` 欄位
```javascript!
db.posts.find(
  {
    tags: { $in: ["幹話"] },
  },
  {
    _id: 0,
  }
);
```
15. 請嘗試用 Mongo Shell 指令刪除全部 Documents
```javascript!
db.posts.deleteMany({})
```

### 自主研究題
1. posts 所有 document 數量為？(回傳數字)
```javascript!
db.posts.find().count()
```
2. 查詢 `name` 為 `Ray Xu` 的 document 列表，排序為由新到舊
```javascript!
db.posts.find({ name: "Ray Xu" }).sort({ createdAt: -1 });
```
3. 請查詢 `name` 為 `Ray Xu` 的 document 列表，顯示前 30 筆資料
```javascript!
db.posts.find({ name: "Ray Xu" }).limit(30);
```
4. 請查詢 `name` 為 `Ray Xu` ，顯示100(含) 個讚以上的前 30 筆 document 列表，時間排序由新到舊
```javascript!
db.posts
  .find({ name: "Ray Xu", likes: { $gte: 100 } })
  .limit(30)
  .sort({ createdAt: -1 });
```
5. 請查詢 `comments` 超過 `100` 的 document 列表，跳過前 30 筆資料，再顯示 30 筆資料
```javascript!
db.posts.find({ name: "Ray Xu" }).skip(30).limit(30);
```
6. 尋找超夯熱門貼文，請查詢 `likes` **且(and)** `comments` 都 `1,500(含)`以上的 document 列表
```javascript!
db.posts.find({
  $and: [{ likes: { $gte: 1500 }, comments: { $gte: 1500 } }],
});
```
7. 尋找普通熱門貼文，請查詢 `likes` **或(or)** `comments` ， `1,000(含)`以上 的 document 列表
```javascript!
db.posts.find({
  $or: [{ likes: { $gte: 1000 }, comments: { $gte: 1000 } }],
});
```
8. 查詢 `image` 欄位為 `null` 的 document 列表
```javascript!
db.posts.find({ image: null });
```
9. 隨意找一筆 document 資料，將 `tags` 欄位裡的陣列，新增一個新 tags 為 `遊記`
```javascript!
db.posts.updateOne(
  {
    _id: ObjectId("6621cefe2bd3230ad42bb4e9"),
  },
  {
    $push: { tags: "遊記" },
  }
);


```
10. 將所有 `tags` 陣列裡的 `感情` 都移除
```javascript!
db.posts.updateMany(
  {
    tags: { $in: ["感情"] },
  },
  {
    $pull: {
      tags: "感情",
    },
  }
);
```