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