業務開發中,可能會存在判斷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
,匹配不上的資料自然就不會返回,於是就達到了取出存在這個欄位的資料的目的