昨天分享了一篇《MongoDB基础之原生方法增删改查》的文章,今天这篇文章主要是扩展查询条件部分,专业名词叫查询表达式。

2 查询表达式

2.1 测试数据录入

db.query.insert([
    {id:1, name:'张无忌', age:26, gender:'M'},
    {id:2, name:'赵敏', age:NumberInt(23), gender:'F'},
    {id:3, name:'张三丰', age:60, gender:'M', profession:'武术教练'},
    {id:4, name:'谢逊', age:45, gender:'M', alias:'金毛狮王'},
    {id:5, name:'张翠山', age:47, gender:'M', other_info:{son:'张无忌', wife:'殷素素'}},
    {id:6, name:'殷素素', age:'43', gender:'F'},
])

2.2 条件操作符

2.2.1 等于

db.query.find({id:2})
db.query.find({id:{$eq:2}})

2.2.2 小于

db.query.find({id:{$lt:3}})

2.2.3 小于或等于

db.query.find({id:{$lte:3}})

2.2.4 大于

db.query.find({id:{$gt:3}})

2.2.5 大于或等于

db.query.find({id:{$gte:3}})

2.2.6 不等于

db.query.find({id:{$ne:3}})

2.2.7 $in

db.query.find({id:{$in:[3,4]}})

2.2.8 $nin

db.query.find({id:{$nin:[3,4]}})

2.3 多条件并列

2.3.1 and条件

db.query.find({age:{$gt:40}, gender:'M'})

2.3.2 or条件(注意数组)

db.query.find({$or:[{age:{$gt:40}}, {gender:'M'}]})

2.4 特殊操作符

2.4.1 $type

db.query.find({age:{$type:'string'}})
db.query.find({age:{$type:2}})
db.query.find({age:{$type:'double'}})

2.4.2 $exists

db.query.find({alias:{$exists:true}})

2.4.3 正则匹配,类似mysql中的like

db.query.find({name:{$regex:'张'}})
db.query.find({name:/^张.*丰$/})

2.5 条件补充

2.5.1 排序 sort()

db.query.find().sort({age:-1})

2.5.2 跳过和取条数 skip() limit()

db.query.find().sort({age:-1}).skip(2).limit(3)

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/39