zoukankan      html  css  js  c++  java
  • 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的数据

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

  • 相关阅读:
    应用提交到安卓应用市场需要注意哪些地方?
    chromedriver 下载
    缺陷与测试报告
    需求分析与测试计划、方案
    【转】使用信号监控 Django 模型对象字段值的变化
    缓存技术
    Tomcat 代码方式启动
    枚举类型 (币种例子)
    SpringMVC 常用注解
    HttpClient 教程
  • 原文地址:https://www.cnblogs.com/yan7/p/9371205.html
Copyright © 2011-2022 走看看