虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > MongoDB数据库 > 【MongoDb探究】06-深入查询表达式2

【MongoDb探究】06-深入查询表达式2
类别:MongoDB数据库   作者:码皇   来源:<a href="http://blog.csdn.net/acmman" target="_blank" rel="nofollow"   点击:

【MongoDb探究】06-深入查询表达式2。下面给大家介绍一些简洁的表达式。

【MongoDb探究】06-深入查询表达式2。下面给大家介绍一些简洁的表达式。

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

分别是$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表达式将数据读出来,而不是

直接操作二进制数据,这样查询大量数据就会影响效率。

至此,我们的查询表达式全部介绍完毕。

相关热词搜索: