一个筛选mongo存在某个字段的数据的技巧

1,797 阅读1分钟

业务开发中,可能会存在判断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,匹配不上的数据自然就不会返回,于是就达到了取出存在这个字段的数据的目的