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

 

​        在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的数据函数

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

相关文章
相关标签/搜索