zoukankan      html  css  js  c++  java
  • 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表达式将数据读出来,而不是
    直接操作二进制数据,这样查询大量数据就会影响效率。

    至此,我们的查询表达式全部介绍完毕。
    转载请注明出处:
     
     
  • 相关阅读:
    十进制转二进制
    线性表重点
    线性表 顺序表
    KB Byte Bit
    慕课-北京理工大学 机器学习 31个省市 聚类,小白学习
    layout and src is empty
    the problem was occurred when start ADT
    how to build a android environment in ubuntu 15.10
    ubuntu hud dash launcher
    修改了/etc/environment里环境变量导致登陆不了ubuntu系统
  • 原文地址:https://www.cnblogs.com/gaochsh/p/6287662.html
Copyright © 2011-2022 走看看