我們在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 < 90
、 60 < 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
相似。
本篇文章同步放在我的部落格,大家有空可以進來逛逛