iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

被MongoDB用Aggregate暴打的後端小菜雞日記系列 第 4

被MongoDB用Aggregate暴打的後端小菜雞日記-day4-用$match篩選資料

  • 分享至 

  • xImage
  •  

我們在day2的時後,就有介紹到如何使用$match搜尋想要的資料,今天要再更深入的介紹可以和$match一起搭配的相關操作符。

例如:有一個collection score專門紀錄學生各科的成績,我們可以用$gt(大於)、$gte(大於等於)、$lt(小於)、$lte(小於等於),來選取我們要的成績範圍。

學生資料

  { student_id: 1, math: 100, english: 80 },
  { student_id: 2, math: 30, english: 90 },
  { student_id: 1, math: 70, english: 20 }

如果我們想要找學生成績範圍, 20 ≤ math < 9060 < english ≤ 100
可以下這樣的指令

score.aggregate([
  {
    $match: { 
      math: { $gte: 20, $lt: 90 }, 
      english: { $gt: 60, $lte: 100 } 
    }
  }
]);

最後得到這一筆資料

  { student_id: 2, math: 30, english: 90 }

如果是不想要特定的資料,比如說不要數學考100分的學生資料,這時候就會使用$ne(不等於)。

score.aggregate([
  {
    $match: { math: { $ne: 100 } }
  }
]);

最後得到這兩筆資料

  { student_id: 2, math: 30, english: 90 },
  { student_id: 1, math: 70, english: 20 }

或是我們希望特定數學成績資料,比如說要數學分數考100和30分的學生資料,這時候就會使用$in,後面接著一個陣列,陣列裡面寫入我們想要找的值。

score.aggregate([
  {
    $match: { math: { $in: [100, 30] } }
  }
]);

ps:如果是不想要特定的數值,可以改用$nin,用法和$in相似。

本篇文章同步放在我的部落格,大家有空可以進來逛逛


上一篇
被MongoDB用Aggregate暴打的後端小菜雞日記-day3-基本使用懶人包
下一篇
被MongoDB用Aggregate暴打的後端小菜雞日記-day5-轉變資料格式
系列文
被MongoDB用Aggregate暴打的後端小菜雞日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言