• mongoDB6--查询表达式


    接上一篇总结《深入查询表达式1》

    上一篇我们介绍了mongodb的一些表达式的深入应用。可能大家觉得有些
    指令比较难记,下面给大家介绍一些简洁的表达式。

    给大家介绍的是以下两个指令:

    分别是$where、$regex

    (1)$where指令
    我们使用$where来代替之前的查询指令。
    我们查询商品价格大于5000的商品:


    $where的原理是,在mongodb中,存储的是一个一个的对象,对象中是各种属性,
    我们可以把对象一个一个的遍历一遍,遍历的过程中就会把磁盘上的二进制数据
    转化成一个个json对象,然后把其中的属性值读出来,那么我们就可以使用js中的
    判断式去引用。

    使用$where会使查询表达式变得非常的简洁易懂,如:
    例:取出价格大于100且小于300,或者大于3000且小于5000的商品($or)
    使用一般的表达式:
    db.goods.find({$or:[{$and:[{shop_price:{$gt:100}},{shop_price:{$lt:300}}]},{$and:[{shop_price:{$gt:3000}},{shop_price:{$lt:5000}}]}]},{shop_price:1,goods_name:1,_id:0});


    使用$where表达式
    db.goods.find({$where:'this.shop_price>100 && this.shop_price<300 || this.shop_price>3000 && this.shop_price<5000'},{shop_price:1,goods_name:1,_id:0});

    (2)$regex
    $regex表达还实际起到是“正则表达式”的作用。
    例:查询商品名开头含有“诺基亚”的商品
    db.goods.find({goods_name:{$regex:/^诺基亚.*/}},{goods_name:1,_id:0});


    不推荐使用$where和$regex表达式操作大量数据,原因是因为必须将磁盘上的二进制数据
    转化成一个个json对象,才能使用$where和$regex表达式将数据读出来,而不是
    直接操作二进制数据,这样查询大量数据就会影响效率。

    至此,我们的查询表达式全部介绍完毕。
    转载请注明出处:
     
     
  • 相关阅读:
    通过Eclipse生成可运行的jar包
    消息队列原理概念扫盲
    为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
    iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
    http相关概念在iOS中的使用介绍
    AutoLayout技术选型和应用
    addChildViewController相关api深入剖析
    SymmetricDS 完全配置安装手册
    决策树之 C4.5 算法
    决策树之 ID3 算法
  • 原文地址:https://www.cnblogs.com/gaochsh/p/6287662.html
Copyright © 2020-2023  润新知