您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
mongodb-深入查询表达式
发布时间:2017-11-22 18:59:07编辑:雪饮阅读()
数据统计:
db.goods.find().count()
统计goods表中所有数据总条数
查询(比较查询):
db.goods.find({cat_id:{$ne:3}},{goods_name:1,cat_id:1,_id:0})
查询cat_id不等于3的所有数据
大于$gt,小于$lt,小于等于lte,大于等于gte,不等于$ne
in查询
db.goods.find({cat_id:{$in:[4,8]}},{goods_name:1,cat_id:1,_id:0})
查询栏目id为4或8
all查询$all
有数据如:
db.stu.insert({name:'xy',hobby:['xy','dmj','zyh']})
db.stu.insert({name:'dmj',hobby:['dmj','xy','jbr']})
all查询如:
db.stu.find({hobby:{$all:['dmj','xy']}})
这里all查询结果都是hobby字段都包含都包含dmj和xy的记录。
notin查询$nin
查询(逻辑查询)
db.goods.find({$and:[{cat_id:{$gte:4}},{cat_id:{$lte:8}}]},{goods_name:1,cat_id:1,_id:0})
查询栏目id大于等于4而小于等于8
db.goods.find({$nor:[{cat_id:3},{cat_id:11}]},{goods_name:1,cat_id:1,_id:0})
多个条件否定查询$nor
查询栏目id不等于3的也不等于11的
查询(元素运算)
db.goods.find({cat_id:{$mod:[5,0]}},{goods_name:1,cat_id:1,_id:0})
$mod取模(求余)查询
查询栏目id为5的倍数的所有数据
按字段查询,查询存在某字段的所有记录
db.stu.find({xb:{$exists:1}})
这里查询所有记录中存在xb字段的记录
按字段类型查询$type
查询某字段类型为指定类型的所有记录
db.stu.find({age:{$type:1}})
这里查询age字段为int类型的所有记录
更多字段类型值详见mongodb官网
查询(运算符)
where查询
db.goods.find({$where:'this.cat_id>3'},{shop_price:1,goods_name:1,_id:0})
查询栏目id大于3的所有记录
where查询不同于上面其它的查询,因为该查询是先磁盘上二进制数据遍历转换成js可读的json对象,然后才去对比其属性的。
而上面其它的查询则像mysql一样直接比较磁盘上的二进制数据来进行查询的。
但,这样查询则可以条件更复杂,因为其已经转换成json对象,那么对象的属性js都是可以读取的,所以可以方便的根据对象来灵活查询,可以轻松的写出类似mysql那种条件比较复杂的且可读性比较强的查询语句,如:
db.goods.find({$where:'this.shop_price>200 && this.shop_price<500 || this.shop_price>3000 && this.shop_prece<5000'},{shop_price:1,goods_name:1,_id:0})
正则查询
查询商品名以“诺基亚”开头的记录
db.goods.find({goods_name:{$regex:/^诺基亚.*/}},{goods_name:1,_id:0})
正则表达式也是同样的效率不高。少用之,慎用之。
删除表中全部数据
db.goods.remove({})
删除条件指定为空对象,则可以删除表中全部数据
关键字词:mongodb,查询