一個篩選mongo存在某個欄位的資料的技巧

smithdeng發表於2019-11-07

業務開發中,可能會存在判斷mongo中是否存在某個欄位,並且存在這個欄位才能把這個資料取出來,可以使用以下技巧:

假設mongo的user_info表裡面儲存了3條資料,如下:

{
    uid:1,
    sex:1,
},
{
    uid:2,
    sex:0,
    resume:{
        name:"test1",
        desc:"this is test1"
    }
},
{
    uid:3,
    sex:1,
    resume:{
        name:"test1",
        desc:"this is test1"
    }
}
複製程式碼

假設我們的需求是:找出這樣user_info表裡面resume.name存在的資料,顯然第一條資料裡面並沒有resume欄位,所以第一條資料就不是我們這個需求想要的內容,那麼我們在查資料的時候就該判斷resume.name是否存在,如果存在則這條資料是理想資料,查詢方法如下:

  db.user_info.aggregate([
    {
        $match: {$or: [{"resume.name": {$regex:""}}]}
    }
複製程式碼

原理就是用空的一個正則去匹配resume.name,匹配不上的資料自然就不會返回,於是就達到了取出存在這個欄位的資料的目的

相關文章