--- 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")}) ```