---
tags: Node.js 直播班 - 2022 春季班
---
# HW 第一週主線任務
題庫
課程範圍
1. 搜尋 name 欄位為 “Ray Xu” 的 document 列表
db.posts.find({"name":"Ray Xu"})
2. 新增一筆 document,請全部欄位皆填寫
``` =JavaScript
var post = {
"name": "A",
"type": "group",
"image": "",
"createdAt": "2022-03-19 ",
"content": "",
"likes": 1277,
"tags": [ "B", "C", "D" ],
"comments": 326};
db.posts.insertOne(post)
```
3. 新增多筆 document,請全部欄位皆填寫
``` =JavaScript
var post={
"name": "A",
"type": "group",
"image": "",
"createdAt": "2022-03-19 ",
"content": "",
"likes": 1277,
"tags": [ "B", "C", "D" ],
"comments": 326};
var count = 5;
var list =[];
for(var i=0;i<count;i++){
list.push(post);
}; db.posts.insertMany(list)
```
4. 修改一筆 document,filter 條件請用 _id 指定其中一筆資料,content 欄位調整為測試資料
``` =JavaScript
db.posts.updateOne({
"_id": ObjectId("625adcc7e675ad394454cfc3")},
{ "$set": {"content" : "測試資料"}})
```
5. 修改多筆 name 欄位為 "Ray Xu" 的 document 列表,content 欄位都調整為哈哈你看看你
``` =JavaScript
db.posts.updateMany(
{
"name":"Ray Xu"
},{
"$set":{
"content":"哈哈你看看你"
}})
```
6. 刪除一筆 document,filter 條件請用 _id 任意指定其中一筆資料
`db.posts.deleteOne( {"_id": ObjectId("625adcc7e675ad394454cfc3")}) ```
7. 刪除多筆 document,filter 條件請用 type 為 group 的值,刪除所有社團貼文
``` =JavaScript
db.posts.deleteMany( {"type": "group"})
```
8. 刪除多筆 document,filter 條件為以下條件
a. name:"Ray Xu"
b. likes: 500(含) 個讚以下
```=JavaScript
var delfilter={
name:"Ray Xu",
likes :{
$lte:500
}
};db.posts.deleteMany(delfilter)
```
9. 查詢全部 posts 的 document 列表
```=JavaScript
db.posts.find()
```
10. 關鍵字搜尋 name 裡面含有 o 的 document 列表
```=JavaScript
db.posts.find({
name:/o/
})
```
11. 查詢name 欄位為 "Ray Xu" ,filter 篩選出介於 500~1000(含) 個讚(大於等於 500、小於等於 1000)
```=JavaScript
db.posts.find({
name:"Ray Xu",
likes:{
"$gte":500
,"$lte":1000
}
})
```
12. 查詢 comments 有大於等於 500 以上的 document 列表
```=JavaScript
db.posts.find({
comments : {"$gte":500}
})
```
13. 查詢 tags 欄位,有 謎因 或(or) 幹話 的 document 列表
``` =JavaScript
db.posts.find(
{$or:
[ {"tags":"謎因"}, {"tags":"幹話"}]
})
db.posts.find(
{
"tags": {
"$in": ["謎因", "幹話"]
}
}
)
```
14. 查詢 tags 欄位,有 幹話 的 document 列表,需隱藏 _id 欄位
``` =JavaScript
db.posts.find({"tags": "謎因"},{"createdAt":0})
```
15. 請嘗試用 Mongo Shell 指令刪除全部 Documents
``` =JavaScript
db.posts.deleteMany({})
```
### 自主研究題
1. posts 所有 document 數量為?(回傳數字)
``` =JavaScript
db.posts.find().count()
```
2. 請查詢 name 為 Ray Xu 的 document 列表,排序為由新到舊// 1為升序,-1為降序
``` =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({"comments":{"$gt":100}}).limit(30).skip(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.find({"_id": ObjectId("625b7a37e675ad394454d3ca")})
db.posts.update(
{
"_id": ObjectId("625b7a37e675ad394454d3ca")
},
{
"$push": {"tags" : "遊記"}
}
)
db.posts.find({"_id": ObjectId("625b7a37e675ad394454d3ca")})
```
10. 將所有 tags 陣列裡的 感情 都移除
``` =JavaScript
db.posts.find({"tags":"感情"}).count()
db.posts.updateMany(
{"tags":"感情"},
{
"$pull": {"tags" : "感情"}
}
)
db.posts.find({"tags":"感情"}).count()
db.posts.find({"_id": ObjectId("625b845ae675ad394454dbaa")})
```