码迷,mamicode.com
首页 > 其他好文 > 详细

Mongo字符串类型的数值查询---$Where查询介绍

时间:2018-07-26 15:07:47      阅读:366      评论:0      收藏:0      [点我收藏+]

标签:文档   bsp   ret   字符串   HERE   javascrip   img   sci   是什么   

 

?        在Mongo中都知道字符串类型大小比较都是以ASCII进行比较的,所以无法真实比较字符串类型的数值大小

技术分享图片

?        比如查询age大于3的:
db.getCollection(ddzinttest).find({"age":{$gt:"3"}}) 
    得到的结果肯定不是我们所需要的

技术分享图片

     那么这种问题该怎么解决呢。Mongo中有一种**$where**查询,这种查询是可以解决这样需求,

db.getCollection(ddzinttest).find({"$where":"this.age>3"})
技术分享图片
        可以看到使用**$where**是可以达到这个需求的,那**$where**这东西是什么呢:
  其实$where查询是将JavaScript表达式的字符串或函数作为查询的一部分
  Mongo是支持JS语言的,也就是说可以在Mongo中使用JS函数,也就是说其实语句可以这么写
db.getCollection(ddzinttest).find({$where:function(){return this.age>3}})
  而this.age>3是字符串形式的表达方式
  当然可以利用JS函数写一些更加复杂的查询:例如子文档中字符串的比较查询
db.getCollection(ddzinttest).find({$where:function(){
    for(var i =0;i<this.Child.length;i++){
        var currentChild=this.Child[i];
        if(currentChild.key===123&&currentChild.value>111){
            return true;
        }
    }
    return false;
}})            

查询子文档数组Child中key等于123并且value大于111的数据

技术分享图片

  当然,这种复制的就不能使用字符串表达式了。

Mongo字符串类型的数值查询---$Where查询介绍

标签:文档   bsp   ret   字符串   HERE   javascrip   img   sci   是什么   

原文地址:https://www.cnblogs.com/yan7/p/9371205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!